Javascript jquery on单击选择器附着多个元素
我通常处理使用ajax加载的元素的单击事件,如下所示:Javascript jquery on单击选择器附着多个元素,javascript,jquery,Javascript,Jquery,我通常处理使用ajax加载的元素的单击事件,如下所示: $(document).on("click", ".selector", function () { ...} $('.selector-parent').add(document).on("click", ".selector", function (e) { e.stopPropagation(); console.log(e.delegateTarget); }); 但在我多次加载内容的特定情况下,不知何故$(do
$(document).on("click", ".selector", function () { ...}
$('.selector-parent').add(document).on("click", ".selector", function (e) {
e.stopPropagation();
console.log(e.delegateTarget);
});
但在我多次加载内容的特定情况下,不知何故$(document)不起作用,只有当我将其附加到父级$('.selector parent')时才起作用
根据具体情况,并不总是有父选择器。是否可以将其附加到文档,如果存在选择器,请使用它,例如:
$(document, '.selector-parent').on("click", ".selector", function () { ...}
我不想设置任何if-else来搜索父元素是否存在,但要这样使用它。您只需执行以下操作:
$(document).on("click", ".selector", function () { ...}
$('.selector-parent').add(document).on("click", ".selector", function (e) {
e.stopPropagation();
console.log(e.delegateTarget);
});
这里有一点解释。您选择了两个父元素(可能不存在)使用add
方法将document
合并到一个集合中。之后,您需要确保事件不会被选择器父级和document
处理两次,因此无论哪个元素先处理它,它都会阻止事件进一步冒泡e.stopPropagation();
因此,如果没有父级.selector父级作为单击的.selector
的祖先,则文档
将处理事件。如果.selector父级
存在,则它将执行此任务,并且不会使用文档
查看下面的演示,了解它在这两种情况下的工作原理
$('.selector parent')。添加(文档)。在(“单击“,”.selector”),函数(e){
e、 停止传播();
警报(如delegateTarget.nodeName);
});
父项存在
不存在父项
因此,如果父元素存在,则要将单击处理程序委派给父元素;如果不存在,则委派给文档,而不使用如果,则委派给为什么?它必须使用$(文档)
。仔细检查选择器名称、控制台和函数执行。我知道它必须工作,但它不能工作,所以可以用需要的方式或类似方式来完成吗?@user4675957如果它不能使用$(文档)
页面上的其他地方一定有错误,导致它无法工作!