2014-04-11 100 views
0

我在同一個JS文件的兩個地方有以下jQuery代碼;jQuery結合委託語句

$("#myGrid").delegate(".icon-right", "click", function() { 
//Some code 
}); 

$("#myGrid").delegate(".icon-down", "click", function() { 
//Some code 
}); 

所以DIFF被我聽去點擊圖標下/圖標右側的事件

是否可以優化/合併這2條語句?

$("#myGrid").delegate(".icon-right", "click", function() { 
    //Some code 
}).delegate(".icon-down", "click", function() { 
    //Some code 
}); 

使用.on()

+1

你應該,如果你使用的不是很老的jQuery上法用,而不是ATLEAST:https://api.jquery.com/on/ – Esko

+0

@Esa:那麼,你應該考慮*使用'上* '方法。 'delegate'方法在最新版本中仍然存在,並且不推薦使用。 – Guffa

回答

0

結合兩者的jQuery 1.7

0

是的,你可以這樣做:

$("#myGrid").delegate(".icon-right, .icon-down", "click", function() { 
    if(this.className === 'icon-right'){ // some code} 
    else if(this.className === 'icon-down'){ // some code} 
}); 

如果您正在使用jQuery 1.7+那麼你可以試試.on()switch

$("#myGrid").on("click", ".icon-right, .icon-down", function() { 
    switch(this.className){ 
     case 'icon-right': 
      //some code 
      break; 
     case 'icon-down': 
     // some code 
     break; 
    } 
}); 
0

請選擇比賽雙方:

$("#myGrid").delegate(".icon-right,.icon-down", "click", function() { 
    //Some code 
}); 
0

嘗試使用多重選擇器,

的所有元素相同的功能:

$("#myGrid").delegate('click','.icon-right,.icon-down', function(e){ 
}); 

不同不同元素的功能:

$("body").delegate('click','.icon-right,.icon-down', function(e){ 

    if  ($(this).is('.icon-right')) { } 
    else        { } 

});