2012-03-29 33 views
0

所以我有一個頁面上的一系列按鈕,與其他HTML點綴,看起來像這樣:的jQuery .live(「點擊」)似乎只綁定到的第一個元素

<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 
}); 

然而,活(「點擊」)似乎只綁定到第一個元素,那麼什麼都不會與第二,第三等元素髮生。任何建議,我在做什麼

編輯:

原來我太傻了 - 我加了一些錯誤檢查,不允許提交如果一個文本框是空的 - 但我靶向文本框(愚蠢地)由id,而這又是選擇與該ID的第一個文本框 - 這確實是空的。現在更改爲基於類的選擇系統 - 感謝所有答案!

+1

嗯......'live'應該可以工作,儘管它已經被棄用了。嘗試使用'on'來代替,並且一定要在'$ JQ(function(){...})中包裝你的jquery' – 2012-03-29 22:44:38

+0

似乎工作正常,http://jsfiddle.net/jhfR4/ – 2012-03-29 22:44:59

+1

live已被棄用。 .. – 2012-03-29 22:45:09

回答

1

發現這個jQuery開發API網站

在jQuery 1.7的,所述.live()方法被棄用。使用.on()附加事件處理程序。

嘗試使用其他的。對()方法相比,這一切看起來好像沒什麼問題

1

使用。對(),如果這是jQuery的1.7+

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

編輯:另外,根據你在做什麼,.on()可能沒有必要。嘗試。點擊()...

$JQ('.add_new_task').click(function(){ 
    //do some stuff 
}); 
+0

感謝你 - 雖然我使用1.6.2,並且所有東西都是由JS生成的,所以我需要使用live()或on() – agjmills 2012-03-29 22:56:18

+0

如果你使用的是1.6.2,請繼續並根據需要使用live()。否則就使用。點擊():) – 2012-03-29 22:57:43

1

首先你應該使用。對所有的,因爲替換所有事件綁定爲1.7,但你可能會使用較低版本偏離航向。 當你使用live時,你想要使用事件委託,這意味着你必須綁定到一個父對象,然後它將處理來自(特定)子元素的特定傳播事件。

包裝您的輸入字段這樣

<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一個div應該工作:

$JQ('#tasks').live('click', function(){ 
    //do some stuff 
}); 

小康當然是使用。對這樣的(相同的HTML)

$("#tasks").on("click", ".add_new_task", function(event){ 
    //do some stuff 
}); 

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

+0

感謝你們,我使用live()是因爲我在1.6.2是最新版本的時候啓動了項目 - 可能會在未來的_some_點升級到on() – agjmills 2012-03-29 22:57:03

相關問題