jquerys'e.stopPropagation()无法获得所需的功能
jquerys' e.stopPropagation() cannot get required functionality
下面的photoContainer
有子级。这还可以,但如果我点击它的任何子级,代码就会执行,隐藏blackLayer并删除photoContainer
。如何防止这种情况发生,并且在单击photoContainer
子对象以外的任何位置时执行?
谢谢。
$('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
上触发时,这将停止点击事件的传播。
下面是一个演示:http://jsfiddle.net/J9dBS/2/(注意,如果您点击"子"元素,则不会显示警报)
我想指出的是,.live()
自jQuery 1.7起已弃用。如果您使用的是jQuery 1.7或更高版本,则建议使用.on()
,如下所示:
$(<root-element>).on(<event>, <selector>, <event-handler>)
或者,如果您使用的是jQuery 1.4.2到jQuery 1.6.4,那么建议您使用.delegate()
:
$(<root-element>).delegate(<selector>, <event>, <event-handler>);
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- Graphiti中是否有任何工具提示功能
- React redux初始化功能,无论状态变化如何
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 正在获取select上的功能id
- Rhino打印功能
- 使用(navigator.geolocation)检测浏览器功能错误
- 主体单击删除功能上的输入框宽度
- JQuery使用相同的功能自动完成各种输入文本
- OpenLayers在悬停时高亮显示功能,并在单击时选择