1

在接下来的代码中,我使用 AJAX 调用 php 脚本,然后#inner_div使用 JSON 响应进行更新。与此同时,一个#gimme_moar按钮被注入到#inner_div因此我添加了单击处理程序以询问更多结果。

因此,我们将再次使用 ajax 调用相同的 PHP 脚本,然后我们将追加 JSON 响应,#tabla该响应是#inner_div.

一切都按预期工作,但有一件事情......$(".faulty_selector")正在处理前 50 个“行”......如果我继续添加“行”,它们将不会被捆绑$(".faulty_selector"),如果我再次添加这个处理程序,它会复制自己在结束与$(".faulty_selector")我们单击#gimme_moar按钮一样多的执行。

$.ajax({
type: "POST",
url: URL,
data: {
    data1: '1',
    data2: 2,
    data3: 3
},
dataType: "json",
timeout: 25000,
success: function (data) {
    var counter = 50;
    $('#inner_div').html(data.answer);
    $(".faulty_selector").on('click', function () {
        myfunction_action(this.id);
    });
    $("#gimme_moar").click(function () {
        $.ajax({
            type: "POST",
            url: "URL",
            data: {
                data1: '1',
                data2: 2,
                data3: 3
            },
            dataType: "json",
            timeout: 25000,
            success: function (data) {
                counter = counter + 50;
                $('#tabla').append(data.datos);
            }
        });
    }
    });

根据很多人的说法,live() 或 on() 应该能够毫无问题地处理这种情况......但此时我正在使用 on('clic', etc etc) 并且它不起作用...

有什么方法可以刷新/重新绑定 50 new$(".faulty_selector")吗?

4

1 回答 1

2

委托活动

改变

$(".faulty_selector").on('click', function() { myfunction_action(this.id); });

$(document).on('click', ".faulty_selector",  function() { myfunction_action(this.id); });

并将点击事件移动到方法之外ajax。否则,您将为发送的事件 ajax 请求绑定相同的事件。

似乎也缺少ajax.

$.ajax({
    type: "POST",
    url: URL,
    data: {
        data1: '1',
        data2: 2,
        data3: 3
    },
    dataType: "json",
    timeout: 25000,
    success: function (data) {
        var counter = 50;
        $('#inner_div').html(data.answer);
    }
});

$(document).on('click', ".faulty_selector", function () {
    myfunction_action(this.id);
});
$(document).on('click', "#gimme_moar", function () {
    $.ajax({
        type: "POST",
        url: "URL",
        data: {
            data1: '1',
            data2: 2,
            data3: 3
        },
        dataType: "json",
        timeout: 25000,
        success: function (data) {
            counter = counter + 50;
            $('#tabla').append(data.datos);
        }
    });
});
于 2013-06-18T22:58:16.677 回答