结合事件触发器和附加条件的最佳方法

时间:2012-01-26 11:06:28

标签: javascript jquery events conditional

有没有办法在 one expressinon 中合并,例如:

  1. $('.class').click()
  2. if( foo == 'bar')
  3. 我的意思是,

    单击.class项并且var为true时,执行某些操作

    将这一点放在一起的东西

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

2 个答案:

答案 0 :(得分:1)

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

例如:

如果.class</a>标记,您可以这样:

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

如果是这样的<input/>

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

显然foo应为global

  

答案 1 :(得分:0)

正如我在评论中所说,这似乎是最好的方法。但作为概念证明,您可以使用以下命令扩展jQuery:

(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
});