簡體   English   中英

jQuery .live('click')似乎僅綁定到第一個元素

[英]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()

http://api.jquery.com/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
});

http://api.jquery.com/on/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM