jquery更改被替换的对象的处理程序

时间:2012-08-11 02:55:20

标签: javascript jquery ajax triggers replace

如果在更换对象后检查对象,是否有办法继续检查对象

这说明了我遇到的问题

http://jsfiddle.net/nr6eA/

一旦替换了元素,就不会再次触发更改功能,而我很清楚为什么会这样,我不知道如何解决这个问题。

我有很多复选框,并且在替换它们时添加一个脚本似乎不是最好的主意。

有没有办法重新初始化ajax更新的jquery函数?

1 个答案:

答案 0 :(得分:1)

您需要事件委派。为此,您可以将on()与jQuery 1.7+一起使用,如下所示:

.on()

$(document).ready(function() {
    $('#f').on('change', ' input:checkbox', function() {
        $('#textbox1').val($(this).attr('id') + " " + $(this).is(':checked'));
        $(this).replaceWith('<input type="checkbox" id="checkbox1" class="ichange"/>')
    });
});​

但是,你的小提琴显示jQuery 1.6.2。在这种情况下,您可以使用live()delegate()

live()

$(document).ready(function() {
    $('#f input:checkbox').live('change', function() {
        $('#textbox1').val($(this).attr('id') + " " + $(this).is(':checked'));
        $(this).replaceWith('<input type="checkbox" id="checkbox1" class="ichange"/>')
    });
});​

delegate()

$(document).ready(function() {
    $('#f').delegate('input:checkbox', 'change', function() {
        $('#textbox1').val($(this).attr('id') + " " + $(this).is(':checked'));
        $(this).replaceWith('<input type="checkbox" id="checkbox1" class="ichange"/>')
    });
});​

但如果你可以将.on()与jQuery 1.7 +一起使用会更好。