div上的jQuery click()触发父单击()事件
这样试试div上的jQuery click()触发父单击()事件,jquery,onclick,Jquery,Onclick,这样试试 $('.parent').click(function(event) { if ( $(event.target).closest('.child').length > 0 ) { var close = $(event.target).closest('.child'); var windowID = close.data('windowid'); closeWindow(win
$('.parent').click(function(event) {
if ( $(event.target).closest('.child').length > 0 ) {
var close = $(event.target).closest('.child');
var windowID = close.data('windowid');
closeWindow(windowID);
return false;
}
});
应该可以。无需将它们放入文档中。就绪功能
$('.parent').click(function(event) {
if ( $(event.target).closest('.child').length > 0 ) {
var close = $(event.target).closest('.child');
var windowID = close.data('windowid');
closeWindow(windowID);
return false;
}
});
应该可以。无需将它们放入文档中。就绪功能发现问题:
因为您在body元素上使用on,而不是直接在
剧院,这个活动将上升到身体元素
这就是它的工作原理
在事件冒泡的过程中。剧院包装器元素单击事件
将被触发,因此您可以看到它
解决方案:
$(".parent").click(function() {
});
$(".child").click(function() {
});
发现问题:
因为您在body元素上使用on,而不是直接在
剧院,这个活动将上升到身体元素
这就是它的工作原理
在事件冒泡的过程中。剧院包装器元素单击事件
将被触发,因此您可以看到它
解决方案:
$(".parent").click(function() {
});
$(".child").click(function() {
});
对于父级,您只需要一个单击处理程序。以常规方式处理事件,除非原始目标在子对象中,在这种情况下,您可以进行分支并执行不同的操作
$('.parentParent').on("click", ".child", function(event){});
对于父级,您只需要一个单击处理程序。以常规方式处理事件,除非原始目标在子对象中,在这种情况下,您可以进行分支并执行不同的操作
$('.parentParent').on("click", ".child", function(event){});
上个月,我在同步AJAX调用preventDefault()/stopPropagation()和Firefox时遇到了一个奇怪的问题。似乎在Firefox下的keydown处理程序中使用同步AJAX调用时,默认行为总是被传播。这里有更多信息:这是您的用例吗?上个月,我遇到了一个关于同步AJAX调用preventDefault()/stopPropagation()和Firefox的奇怪问题。似乎在Firefox下的keydown处理程序中使用同步AJAX调用时,默认行为总是被传播。这里的更多信息:这是您的用例吗?在我的例子中是的,因为我正在运行时添加这些div。单击()。。有用,但我不能用。.on和stopPropagation()一定有问题。删除AJAX部件时,代码是否正常工作?如果是这样,请检查我对您的问题的评论
,没有必要将它们放在document.ready函数中
如果该方法在目标元素在DOM中之前执行,它将不会绑定事件。为了防止这种风险,最好在DOM就绪时进行绑定。在我的情况下是这样的,因为我正在运行时添加这些div。单击()。。有用,但我不能用。.on和stopPropagation()一定有问题。删除AJAX部件时,代码是否正常工作?如果是这样,请检查我对您的问题的评论,没有必要将它们放在document.ready函数中
如果该方法在目标元素在DOM中之前执行,它将不会绑定事件。为了防止这种风险,最好在DOM准备就绪时进行绑定。因为您在body元素上使用on,而不是直接在img.treatre上使用,所以事件将冒泡到body元素,这就是它的工作方式。
在您的场景中不是这样。按预期工作,将文档
替换为其中的正文
,它仍能工作。您所描述的事件冒泡问题曾经是使用live()
而不是on()
时出现的问题live()
过去总是让所有内容都出现在文档中
因此stopPropagation()
不起作用on()
按预期工作。这是:$('.parentParent')。on(“click”、“.child”、函数(事件){})
与此完全相同:$(document)。在(“click”、“.child”上,函数(event){}
就是您所拥有的。绑定到文档而不是最近的静态元素并不会突然阻止stopPropagation()
或返回false
在使用on()时在.child
元素中工作
因为您在body元素上使用on,而不是直接在img.treatre上使用on,所以事件将冒泡到body元素,这就是它的工作方式。
这在您的场景中不是真的。按预期工作,用body
替换文档,它仍然工作。您正在描述的事件冒泡问题过去使用live()
noton()
live()
总是让文档中的所有内容冒泡,因此stopPropagation()
不起作用。on()
按预期工作。这是:$('.parentParent')。on(“单击“,”.child”,函数(事件){});
与此完全相同:$(document)。在(“click”、“.child”上,函数(event){}
就是您拥有的。绑定到文档而不是最近的静态元素并不是突然阻止stopPropagation()
或返回false
在使用on()时在.child
元素中工作
@DesertP没问题,很高兴它仍然有用!@DesertP没问题,很高兴它仍然有用!