使用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
选择器,也没有用!
当然我可以为我想要绑定的元素添加另一个唯一的类,但这确实应该有效,对吧?
答案 0 :(得分: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 不起作用!