【问题标题】:Jquery on change does not work after reflecting ajax results反映ajax结果后,Jquery on change不起作用
【发布时间】:2014-03-09 15:48:02
【问题描述】:

我是 jquery 的新手。我正在尝试通过 jquery、php 动态添加、编辑、搜索表。我的代码适用于初始添加、编辑、搜索。但是,搜索后,当我通过 ajax 替换表条目并尝试编辑结果条目时,单击/更改功能不起作用。

$(document).ready(function () {
$(".edit_tr").click(function () {
    var ID = $(this).attr('id');
    $("#Client_" + ID).hide();
    $("#address_" + ID).hide();
    $("#Client_input_" + ID).show();
    $("#address_input_" + ID).show();
})

$(".edit_tr").change(function () {
    var ID = $(this).attr('id');
    var Client = $("#Client_input_" + ID).val();
    var address = $("#address_input_" + ID).val();

    var dataString = 'id=' + ID + '&Client=' + Client + '&address=' + address;


    $.ajax({
        type: "POST",
        url: "table_edit_ajax.php",
        data: dataString,
        cache: false,
        success: function (html) {
            $("#Client_" + ID).html(Client);
            $("#address_" + ID).html(address);
        }
    });
} else {
    alert('Enter something.');
}

});

// Edit input box click action
$(".editbox").mouseup(function () {
    return false
});

// Outside click action
$(document).mouseup(function () {
    $(".editbox").hide();
    $(".text").show();
});

});

【问题讨论】:

标签: jquery textbox onchange


【解决方案1】:

当文档准备好时,事件被分配给元素。以后添加的任何元素都不会自动附加到任何事件。

在添加新元素后尝试使用 .delegate 或 .on 或显式附加事件。

【讨论】:

    【解决方案2】:

    使用.on()

    由于元素是动态添加的,因此在 DOM 准备好或页面加载时不存在。

    所以你必须使用Event Delegation

    语法

    $( elements ).on( events, selector, data, handler );
    

    喜欢这个

    $(document).on('click','.edit_tr',function(){
        //code here
    });
    

    $('parentElementPresesntAtDOMready').on('click','.edit_tr',function(){
       // code here
    });
    

    【讨论】:

    • 非常感谢。现在,更改为 on 后,代码在 chrome 中可以正常工作.. 但在 IE 中不行.. 单击可以工作,但更改不会.. 实际上光标不会等待我们输入.. 有什么想法吗?
    • @user3398760 你用的是哪个版本的jQuery库和IE版本?
    • 你觉得这个语法有问题吗..$("#maintable").on("change",".edit_tr",function(){
    • 控制台上没有错误..当尝试 $("document").on 没有帮助..我试过
    • @user3398760 制作一个小提琴或给出问题的实时链接。然后尝试不带引号的$(document).on
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2016-06-04
    • 2012-08-02
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    相关资源
    最近更新 更多