组合事件触发器和附加条件的最佳方式

best way to combine an event-trigger and an additional condition

本文关键字:最佳 方式 附加条件 事件 触发器 组合      更新时间:2023-09-26

有没有一种方法可以在中组合一个表达式,例如:

  1. $('.class').click()
  2. if( foo == 'bar')

当.class项被点击并且var为true时,做一些

把放在一起的东西

$('.class').click(function(){
    if(foo == 'bar'){
        //do something
    }
})

根据您的测试用例,您可以尝试使用jquery选择器;

例如:

如果.class是一个</a>标签,你可以有这样的:

$('a[href=#^"'+foo+'"].class').click(function(){ /* */ });

如果是<input/>,类似于

$('input[value="'+foo+'"].class').click(function(){ /* */ });

显然foo应该是global

  • 演示:http://jsbin.com/eyivif/2

正如我在评论中所说,这似乎是最好的方法

(function($) {
    $.fn.cond_click = function(condition, handler) {
        return this.click(function() {
           if(condition.apply(this, arguments)) {
               handler.apply(this, arguments);
           }
        });
    };
}(jQuery));

可以用作:

$('.class').cond_click(function(){
    return foo === 'bar';
}, function() {
    // do something
});