2014-06-16 32 views
1

據我所知,它建議使用人體作爲委託。對()事件:使用身體作爲委託時選擇特定元素

$('body').on('click', 'button', function() { 
    $('input[type="checked"]').removeAttr('checked'); 
}); 

我在哪裏遇到麻煩試圖選擇特定的時元素但屬於同一類型。因此,舉例來說,如果我有一個具有唯一類,ID等的按鈕,我最終選擇DOM中的第一個按鈕。

$('body').on('click', $('button#clear'), function() { 
    $('input[type="checked"]').removeAttr('checked'); 
}); 

使用.on()時,是否有任何解決方法?

獎勵:有沒有時間,你不應該用身體作爲代表?如果是的話,第二個最佳選擇是什麼?

+1

你只需要使用事件代表團如果在綁定處理程序的元素不存在,或者如果你想在同一處理程序綁定到許多要素。如果兩者都不是,則直接綁定處理程序。 –

+1

'$(document)'是另一個。尤其是在動態添加元素的情況下,如果您不知道確切的地方... –

+0

@NikTerentyev謝謝!你怎麼能夠在評論btw格式的代碼?直到現在,從來不知道這是可能的。 –

回答

1

body不建議本身,它只是一個安全的賭注,它會工作,因爲你的目標元素是可能的body一個孩子 - 在現實中,你應該使用靜態容器爲您的AJAX內容,你最初的選擇如:

<div id="container"> 
    <!--I GET POPULATED WITH AJAX CONTENT--> 
    <input id="ajaxInput" /> <!--I came from an AJAX call--> 
</div> 

現在你可以使用

$("body").on("click", "#ajaxInput", function() { }); 

但是,這將每次單擊body時間運行的檢查。一個更好的選擇應該是:

$("#container").on("click", "#ajaxInput", function() { }); 
+0

有沒有什麼辦法可以選擇jQuery對象:$('button:first')還是僅限於ID和類? –

+1

@CarlEdwards:您可以使用jQuery支持的任何選擇器:https://api.jquery.com/category/selectors/,甚至可以創建自己的僞選擇器。 –

+0

非常感謝Felix! –