【问题标题】:JQuery 1.3.1 doesn't find dynamically generated rowsJQuery 1.3.1 找不到动态生成的行
【发布时间】:2010-10-13 02:53:34
【问题描述】:

我刚刚安装了 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 开发者工具来检查 HTML。 如果我从行中删除 JQuery12345678="null" 参数。它工作正常。

谁能告诉我该怎么做?

【问题讨论】:

  • 你能举个相关的html sn-p的例子吗? Mozilla Firefox 提供了一个 JavaScript 错误控制台,请通过触发事件查看是否有任何错误/异常。

标签: jquery ajax dynamic


【解决方案1】:

我们需要查看您的 HTML。这可能会说明问题。同时,您的代码可以大大简化:

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

【讨论】:

    【解决方案2】:

    听起来您需要使用.live 而不是.click:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2019-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-29
        • 1970-01-01
        相关资源
        最近更新 更多