лучший способ объединить событие-триггер и дополнительное условие - PullRequest
1 голос
/ 26 января 2012

есть ли способ объединить в одно выражение , например:

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

Я имею в виду,

, когда по элементу .class щелкают, а var - true, сделать что-то

что-то, что объединяет все это

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

Ответы [ 2 ]

1 голос
/ 26 января 2012

в зависимости от вашего теста вы можете попробовать использовать селектор jquery;

например:

если .class - это тег </a>, который вы можете получить следующим образом:

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

если это <input/> что-то вроде этого

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

очевидно, foo должно быть global

0 голосов
/ 26 января 2012

Как я уже сказал в своем комментарии, это лучший способ сделать это.Но в качестве подтверждения концепции вы можете расширить 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
});
...