2011-05-27 56 views
0

我無法將.live功能應用於具有唯一ID的特定輸入標籤。我做錯了嗎?有什麼建議麼?jquery實時功能不適用於特定選擇器

$('input.newQty').live('change', function(){ 
}); //works 

$('input.newQty[id="'+naam+'"]').live('change', function(){ 
}); //does not work 

回答

1

更新:如果你必須使用現場活動這種情況下,我會派出的事件處理函數,而不是作爲一個匿名函數。這可能是我會做的。

function myChangeHandler(e){ 
if($(this).attr("id")==naam)) 
{ 
    //found the right input, hook this event handler to the input directly and unbind it from all others 
    $("input.newQty").die("change",myChangeHandler); 
    $(this).bind("change",myChangeHandler); 
} 
//rest of the code goes here 

} 

$("input.newQty").live("change",myChangeHandler); 

據我所知,實時選擇器不能動態。正如你不能通過在運行時加入變量來構建實時事件的選擇器一樣。他們需要整體評估才能工作。

因此,你不能有一個活表達

$('input.newQty[id="'+naam+'"]').live('change', function(){ 
}); 

你最好的辦法將是使用它的類選擇,你已經正確。

+0

這聽起來合乎邏輯enuf ..你對我遇到的問題有何建議? – 2011-05-27 11:25:14

+0

我在編輯我的答案給你一個替代方案。 – Nikhil 2011-05-27 11:27:49

+1

我已經給出了更新的代碼。雖然它可以進一步調整,因爲它會繼續使用唯一ID在輸入上調用die()和bind()。你可能想要存儲一個標誌來說例程已經通過綁定連接,而不是再次調用bind() – Nikhil 2011-05-27 11:37:00

3

如何:

$('#'+ naam).live('change', function() { 
    // ... 
}); 

或者,如果你想使用name屬性,而不是id必須是唯一的:

$('input.newQty[name="' + naam + '"]').live('change', function() { 
    // ... 

}); 
+0

@Darin no..doesnt work – 2011-05-27 11:20:04

+0

@Darin它是如何改變什麼的?這是所有關於選擇'名稱'attr然後 – 2011-05-27 11:22:03

+0

@Aakash Goel,你想通過'id'或'name'來選擇嗎? – 2011-05-27 11:22:34