首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery stopPropagation不工作

jQuery stopPropagation不工作
EN

Stack Overflow用户
提问于 2011-05-19 05:21:36
回答 2查看 3.4K关注 0票数 4

我使用了下面的选色器,它工作得很好,但是当我点击颜色选择器图标时,我不想让它泡到身体上。所以我尝试了以下步骤,现在颜色选择器不起作用了。

检查 http://jsfiddle.net/CWGgM/

如果您从jsfiddle中删除下面的代码,那么它就能工作。是什么导致了这一切

代码语言:javascript
复制
$('#test').click(function(e){
    e.stopPropagation();
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-19 05:30:35

它似乎使用了自己的样式代码,其中允许事件冒泡并在document上进行处理。

因此,这些事件必须传播到document,否则它们就无法工作。

您可以通过以下解决办法避免在身体上触发事件.

代码语言:javascript
复制
$('body').click(function(event) {
    if ($(event.target).parent()[0] == $('.mColorPickerTrigger')[0]) {
       return true;   
    }
});

jsFiddle

或者用多色器效果更好.

代码语言:javascript
复制
$('body').click(function(event) {
    if ($(event.target).parent().hasClass('mColorPickerTrigger')) {
       return true;   
    }
});

jsFiddle

票数 3
EN

Stack Overflow用户

发布于 2011-05-19 08:16:42

正如@alex提到的,颜色选择器似乎正在使用live()监听整个文档的点击。在阻止传播之前,您可以检查事件是否起源于颜色选择器,如果是,则让它冒泡。您需要使用closest(),因为可以单击颜色选择器图标的<span>容器或内部的<img>元素。

代码语言:javascript
复制
$('#test').click(function(e){
    if($(e.target).closest('.mColorPickerTrigger').length) return;
    e.stopPropagation();
});

查看jsfiddle演示程序:http://jsfiddle.net/CWGgM/1/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6054136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档