[英]jQuery .live('click') only binding to first element on the page
[英]jQuery .live('click') seems to only bind to the first element
因此,我在頁面上有一堆按鈕,這些按鈕散布在其他HTML上,如下所示:
<input class="add_new_task" type="submit" value="Add New Task">
<input class="add_new_task" type="submit" value="Add New Task">
<input class="add_new_task" type="submit" value="Add New Task">
然后我有如下選擇器:
$JQ('.add_new_task').live('click', function(){
//do some stuff
});
但是,live('click')似乎僅綁定到第一個元素,因此第二個,第三個等元素將什么也不會發生。 關於我在做什么的任何建議
編輯:
原來我很傻-我添加了一些錯誤檢查,如果文本框為空,則不允許提交-但我是通過ID(愚蠢地)將文本框定位為目標,然后依次選擇了具有該ID的第一個文本框-確實是空的。 現在已更改為基於類的選擇系統-盡管感謝所有答案!
在jQuery API網站上找到了這個
從jQuery 1.7開始,不推薦使用.live()方法。 使用.on()附加事件處理程序。
嘗試使用.on()方法,但對我而言一切正常
如果是jQuery 1.7+,請使用.on()
編輯:此外,根據您在做什么,.on()可能不是必需的。 嘗試.click()...
$JQ('.add_new_task').click(function(){
//do some stuff
});
首先,您應該使用.on,因為on替換了1.7版以后的所有事件綁定,但是您當然可以使用較低的版本。 當使用實時時,您想使用事件委托,這意味着您必須綁定到父對象,該父對象隨后將處理(特定)子元素中的特定傳播事件。
將您的輸入字段包裝在這樣的div中
<div id="tasks">
<input class="add_new_task" type="submit" value="Add New Task">
<input class="add_new_task" type="submit" value="Add New Task">
<input class="add_new_task" type="submit" value="Add New Task">
</div>
與.live這應該工作:
$JQ('#tasks').live('click', function(){
//do some stuff
});
當然更好的辦法是像這樣使用.on(相同的html)
$("#tasks").on("click", ".add_new_task", function(event){
//do some stuff
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.