阻止基于单击的元素的某些功能

Prevent certain functionality based on element clicked

本文关键字:元素 功能 单击 于单击      更新时间:2023-09-26

我有一个按钮.btn-1,当单击它时也会触发对.btn-2的单击。我想不出有什么方法可以做到以下几点:当单击.btn-2时也会引发对.btn-1的单击,但在这种情况下,会取消它触发对'.btn-2'的单击的功能,以防止无限循环。有办法做到这一点吗?

您可以使用.trigger()方法向处理程序传递额外的数据:

$('.btn-2').on('click', function(event, skip) {
    // if the skip parameter is a truthy value
    // don't trigger the event
    if ( !skip ) {
       $('.btn-1').trigger('click', [true]);
    }
});
$('.btn-2').trigger('click', [true]);

您可以使用一个布尔值来切换:

var done=true;
$('.btn-1').click(function(){
    $('log').html($('log').html()+'bt1 pressed<br>')
    if(done){
        done=false;
        $('.btn-2').click()
    }
    done=true;
})

http://jsfiddle.net/2o3k5wet/

一种更优雅的方法:

$('.btn-1, .btn-2').on('click', function() {
    // do common stuff
    if ($(this).is('.btn-1')) {
        // do stuff only for 1
    }
    // do common stuff
});