Javascript jquerys';e、 stopPropagation()无法获取所需的功能
下面的光容器有子对象。这可以正常工作,但如果我单击它的任何子项,代码就会执行,隐藏blackLayer并删除Javascript jquerys';e、 stopPropagation()无法获取所需的功能,javascript,jquery,html,Javascript,Jquery,Html,下面的光容器有子对象。这可以正常工作,但如果我单击它的任何子项,代码就会执行,隐藏blackLayer并删除photoContainer。当我点击photoContainerchildren以外的任意位置时,如何防止这种情况发生并执行 谢谢 $('div#photoContainer').live('click', function (e) { e.stopPropagation(); var blackLayer = $('div#blackLayer'); if (b
photoContainer
。当我点击photoContainer
children以外的任意位置时,如何防止这种情况发生并执行
谢谢
$('div#photoContainer').live('click', function (e) {
e.stopPropagation();
var blackLayer = $('div#blackLayer');
if (blackLayer.length) {
blackLayer.fadeOut();
}
$(this).remove();
});
我认为问题在于您正在停止父元素上的事件传播,您希望停止事件在
#photoContainer
元素的子元素上的传播,以便它不会传播到#phoeoContainer
元素:
$('#photoContainer').live('click', function (e) {
var blackLayer = $('div#blackLayer');
if (blackLayer.length) {
blackLayer.fadeOut();
}
$(this).remove();
});
$('#photoContainer > div').live('click', function (event) {
event.stopPropagation();
});
当点击事件在#photoContainer
元素的子div
上触发时,这将停止点击事件的传播
下面是一个演示:(注意,如果单击“child”元素,则不会显示任何警报)
我想指出的是,从jQuery 1.7开始,.live()
已被弃用。如果您使用的是jQuery 1.7或更高版本,建议您使用.on()
如下:
$(<root-element>).on(<event>, <selector>, <event-handler>)
快速搜索将引导您找到这个精确的副本。很好,但返回false;在这种特殊情况下不起作用。我不明白为什么-1.谢谢你解释这个问题,提供了一个实际可行的答案,而不是留下一个愚蠢的无关评论。(您缺少第二个函数上的
“单击”函数(事件)
)。
$(<root-element>).delegate(<selector>, <event>, <event-handler>);