Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同一元素上的多个事件,停止立即传播_Javascript_Jquery - Fatal编程技术网

Javascript 同一元素上的多个事件,停止立即传播

Javascript 同一元素上的多个事件,停止立即传播,javascript,jquery,Javascript,Jquery,我在同一个元素上有两个单击事件。其中一个是委托事件,另一个不是 $( document ).on( 'click.bar', 'p', function( e ) { console.log( 'click.bar', e ); e.stopImmediatePropagation(); }); $( 'p' ).on( 'click.foo', function( e ) { console.log( 'click.foo' ); }); 我想在执行cli

我在同一个元素上有两个单击事件。其中一个是委托事件,另一个不是

$( document ).on( 'click.bar', 'p', function( e ) {

    console.log( 'click.bar', e );

    e.stopImmediatePropagation();

});

$( 'p' ).on( 'click.foo', function( e ) {

    console.log( 'click.foo' );

});

我想在执行click.bar时,在特定情况下禁用click.foo。问题是,总是在调用click.bar之前调用click.foo。有什么想法吗?

如果从$document处理这两个事件,event.stopmediatepropagation可以正常工作

您必须首先在脚本中注册第一个事件,即使用event.stopImediatePropagation注册的事件,因此在单击文档时会首先调用它

$( document ).on( 'click.bar', 'p', function( e ) {

    console.log( 'click.bar', e );

    e.stopImmediatePropagation();

});

$( document ).on( 'click.foo', 'p', function( e ) {

    console.log( 'click.foo' );

});

另一方面,它将不起作用,因为jQuery将事件从内到外冒泡,因此,在p中注册的事件在到达文档之前首先被触发。

这可能有助于它停止在DOM树中的传播。不幸的是,StopperPropagation函数对委托事件没有影响。您需要使用事件捕获而不是事件冒泡–jQuery只支持冒泡事件模型。