0

使用 jQuery 1.7

我无法将 Click 事件绑定到一些动态加载的内容。

我环顾四周,尝试了.live.delegate.on但我无法让它工作。

这是我的代码:

$(".fileexplorer_folderdlg").delegate(".delete", "click", function () {
        console.log("Hello world!");
    });

问题是,.fileexplorer_folderdlg是动态加载的。如果我使用.fileexplorer(不是动态加载的),它可以工作,但是我有更多的.delete类元素我不想绑定到(并且由于各种原因,这两个元素类都不能重命名或更改)。

我也尝试使用.fileexplorer_folderdlg .delete作为.delegate选择器,也没有用!

当然,我可以为我希望绑定的元素添加另一个独特的类,但这确实应该有效,对吧?

4

1 回答 1

2

我相信这会奏效:

$(document).on('click', '.delete', function() {
    if ($(this).closest('.fileexplorer_folderdlg').length) {
         console.log('hello, world!');
    }
});

甚至只是:

$(document).on('click', '.fileexplorer_folderdlg .delete', function() {
     console.log('hello, world!');
});

正如您所发现的,您无法绑定,.fileexplorer_folderdlg因为它是动态的。因此,您需要绑定一些静态元素,该元素在将来的某个时间点包含该元素。

相反,这document会绑定到(但不幸的是,此后每次单击文档都会触发)。

杰夫编辑

尽管上面的代码不起作用,但稍微修改一下就可以了,尽管不是最理想的解决方案。

$(document).on('click', '.delete', function () {
        if($(this).closest(".fileexplorer") != null)
          console.log("Thanks for your help!");
    });

它可以工作,但是对于所有其他 .delete 类都会触发此事件,其中有很多。我不明白的是,为什么使用.fileexplorer_folderdlg .delete不起作用!

于 2012-07-03T08:44:12.533 回答