JQuery 1.3.1找不到动态生成的行

时间:2009-03-13 09:37:21

标签: jquery ajax dynamic

我刚刚安装在ASP.NET MVC RC2中,并且还使用了JQuery 1.3.1库 在我使用1.2.6库之前。
我们的申请在该图书馆下运作良好 但现在我有一个奇怪的问题 我们有一个网格视图,我们用AJAX调用的结果建立起来 返回结果后,我们通过克隆隐藏的行向表中添加新行。

JQuery生成的HTML会为标记添加额外的参数。 这些是JQuery12345678 =“null”的形式。 它们都有相同的名字。 在表的头部有一个复选框,用于选择/取消选择表的所有行。 这是通过迭代表的行。

$("#selectAllCheckbox").click(function() {
    var checked = this.checked;
    $("#dgNewTasks tbody tr").find(':input[type="checkbox"]').each(function() {
        this.checked = checked;
    });
});

现在,通过使用新库,不再设置复选框。 我使用IE Developer Tools来检查HTML。 如果我从我的行中删除JQuery12345678 =“null”参数。它工作正常。

有人可以告诉我我该做什么吗?

3 个答案:

答案 0 :(得分:1)

我们需要查看您的HTML。这可能会解决这个问题。与此同时,您的代码可以大大简化:

$("#selectAllCheckbox").click(function() {
    var checked = this.checked;
    $("#dgNewTasks tbody tr :checkbox").attr("checked", checked);
});

答案 1 :(得分:0)

这不起作用,因为您在click()事件处理程序中附加了事件处理程序(例如ready()),此时没有任何动态创建的行。因此,在创建行后,将click()或任何其他事件处理程序附加到动态创建的行中。

答案 2 :(得分:0)

听起来你需要使用.live代替.click:

$("#selectAllCheckbox").live(function() {
    var checked = this.checked;
    $("#dgNewTasks tbody tr").find(':input[type="checkbox"]').each(function() {
        this.checked = checked;
    });
});