首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stopPropagation和startPropagation

stopPropagation和startPropagation
EN

Stack Overflow用户
提问于 2013-07-17 17:04:58
回答 3查看 29.4K关注 0票数 15

我想做一个额外的点击处理程序(客户端页面,不能修改他的js/html),在我的脚本中应该是这样工作的:

1) event.stopPropagation (暂停客户端点击传播)

2)我的函数(do my function,当一切都完成后,do next)

3) event.startPropagation (继续标准客户端操作)

现在,第一个和第二个工作。第三个是问题。

我知道event.startPropagation并不存在,但我想要这样的东西。有什么提示吗?

EN

回答 3

Stack Overflow用户

发布于 2013-07-17 17:26:31

您可以在父节点f.ex (jQuery)上重新触发相同的事件对象。您需要首先复制事件对象并将其传递到触发器中,以便在气泡(f.ex e.pageX)中捕获相同的事件属性:

代码语言:javascript
复制
var copy = $.extend(true, {}, e);
setTimeout(function() {
    $(copy.target.parentNode).trigger(copy);
},500);
e.stopPropagation();

演示:http://jsfiddle.net/GKkth/

编辑

根据你的评论,我认为你正在寻找类似的东西:

代码语言:javascript
复制
$.fn.bindFirst = function(type, handler) {
    return this.each(function() {
        var elm = this;
        var evs = $._data(this).events;
        if ( type in evs ) {
            var handlers = evs[type].map(function(ev) {
                return ev.handler;
            });
            $(elm).unbind(type).on(type, function(e) {
                handler.call(elm, e, function() {
                    handlers.forEach(function(fn) {
                        fn.call(elm);
                    });
                });
            });
        }
    });
};

这个原型允许您绑定一个“高级处理程序”,该“高级处理程序”包含一个next函数,该函数将在您需要的时候将所有以前的处理程序执行到同一个元素。像使用一样使用它

代码语言:javascript
复制
$('button').click(function() {
    console.log('first');
}).click(function() {
    console.log('second');
}).bindFirst('click', function(e, next) {
    console.log('do something first');
    setTimeout(next, 1000); // holds the other handlers for 1sec
});

演示:http://jsfiddle.net/BGuU3/1/

票数 11
EN

Stack Overflow用户

发布于 2013-07-17 17:10:24

不要一开始就停止传播。

测试my function是否做了您想让它做的事情,然后决定是否要停止传播。

票数 2
EN

Stack Overflow用户

发布于 2013-07-17 17:12:47

如果要分别启用/禁用单击事件,请添加和移除单击处理程序。因为event.stopPropagation()将阻止事件沿dom树向上传播。

更新:

如果您使用的是jQuery,请使用.trigger()函数。

http://api.jquery.com/trigger/

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

https://stackoverflow.com/questions/17695567

复制
相关文章

相似问题

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