2017-04-01 38 views
0

定義多個事這是我的代碼:對單個選擇

$('body').on('click', '.class1', function() { 
    sth ... 
}); 

我想將這些行添加到我的代碼:

$('body').on('click', '.class2', function() { 
    some other things ... 
}); 

但它似乎是一個錯誤的方式做...我的IDE(pyCharm)說'你不應該使用重複的jQuery選擇器'

我該怎麼辦?

回答

2

你可以鏈.on電話,因爲他們將在相同的選擇行爲:

$('body').on('click', '.class1', function() { 
    sth ... 
}).on('click', '.class2', function() { 
    some other things ... 
}); 

這會沉默pyCharm :-)

你也可以用一個點擊手解決它,並與.is()呼叫區分,但這可能會使您的代碼不易讀:

$('body').on('click', '.class1, .class2', function() { 
    if ($(this).is('.class1')) { 
     sth ... 
    } else { 
     some other things ... 
    } 
}); 
1

沒有什麼結構性錯誤,您的IDE是給假警報是面向比相關的代碼有效性更多的表現

爲了滿足你可以在一個變量或鏈中的多個緩存$('body')的IDE on()

var $body=$('body'); 

$body.on('click', '.class1', function(){...}); 
$body.on('click', '.class2', function(){...}); 

或者

$('body').on('click', '.class1', function(){...}) 
     .on('click', '.class2', function(){...}); 

另一種方法是使用一個點擊監聽多個CLASSE S和使用處理器中條件語句

$('body').on('click', '.class1, .class2', function(){ 
    if($(this).hasClass('class1')){ 
    // do class 1 stuff 
    }else{ 
    // do class 2 stuff 
    }  
});