2011-09-11 51 views
3

我一直在使用$("body").delegate(".selector", "click", function() { ... });一段時間了,我想知道:如果我將click事件委託給一個更接近實際元素的包含元素,例如一個滿是按鈕的table,要比將同一活動委派給body快,看到事件不必冒泡到目前爲止?代表的性能()

基本HTML例如:

<html> 
    <body> 
     <table> 
      <tr> 
       <td> 
        <input type="button" value="Delegated element"> 
       </td> 
      </tr> 
      <!-- More, identical rows --> 
     </table> 
    </body> 
</html> 

首先例如使用body

$('body').delegate('input[type="button"]', 'click', function() { 
    // Do things 
}); 

第二示例中,使用table

$('table').delegate('input[type="button"]', 'click', function() { 
    // Do things 
}); 

哪以上兩個例子是快,如果一個比另一個快,爲什麼

回答

5

如果我將click事件委託給一個更接近實際元素的包含元素,例如一個充滿按鈕的表格,這會比將同一個事件委託給body更快,因爲事件沒有泡到目前爲止?

是的,它會更快,正是因爲你的建議。我認爲this是一個有用的文章,並與您的問題相關。

+0

非常感謝您的鏈接。我認爲事情會像這樣工作,但我只是好奇我是否正確。另外,快樂的1K代表:-) – Bojangles