2011-10-31 50 views
1

我想避免爲不同的ID具有相同的代碼。就像submitter1,submitter2等。在同一個過程中,讓變量也用來獲取不同地點1,不同地點2的輸入框ID。有人可以幫我解決下面的代碼嗎?JQuery和可變ID名稱

$(document).ready(function() { 

    $('#submitter<--Variable Here-->').click(function(event) { 
     event.preventDefault(); 
     var newlocation = $("input[name=differentlocation"<--Same Variable Here-->"']"); 
     alert(newlocation); //testing purposes 
     //$('#location').val(newlocation).change(); //Changes location input box 
     //$("#submit").click(); //submits new location 

    }); 
}); 

此代碼使用靜態ID,但正如我所說我想調整它使用變量ID以及。

謝謝。

+1

爲什麼不能使用類名將元素與共享行爲關聯? –

回答

4

可以使用attribute starts with selector

$('button[id^="submitter"]').click(...); 

裏面的click功能,你可以得到id使用簡單的字符串方法:

var uuid = this.id.slice(9), 
    newlocation = $('input[name="differentlocation'+uuid+'"]'); 

工作演示:http://jsfiddle.net/wy8X9/

+0

@ Andy E這樣看起來是否正確:'$('button [id^='submitter']')。click(function(event)'這個id提交者是一個按鈕 – Go3Team

+0

@ Go3Team:是的,看起來是正確的 –

+0

我也有'var uuid = this.id.slice(9); alert(uuid);'它不會提示任何建議? – Go3Team

1

的自從multip以來,正確的解決方案是使用類而不是ID le元素可以具有相同的類。爲了引用具有相同可變部分的輸入,可以使用該ID的一部分或甚至更好的數據字段(在HTML中爲data-whatever="...",在JS中爲$(elem).data('whatever')

1

將ID設置爲data-id並指向它們像這樣

<tag class="submitter" data-id="n"> 

$('.submitter').click(function(){ 
    id = $(this).attr('data-id'); 
var newlocation = $("input[name=differentlocation"+id+"']"); 
}) 
+0

其中「n」是一個數字。 –

+0

我使用隱藏的輸入類型,所以我有:'var newlocation = $(「hidden [name = differentlocation」+ id +「']」 );'如果我做'alert(newlocation);'警告窗口說'object Object' - 任何想法? – Go3Team

+0

$(「hidden [name = differentlocation」+ id +「'」「」)。val() –

1

當你想分享一些東西時,我建議你甚至根據一個普通的類名來關聯它。

您可以閱讀this.id以獲取事件目標的ID並在其中進行操作。

$('.submitter').click(function(e) { 
    e.preventDefault(); 
    var numId = this.id.replace(/[^0-9]+/, ''), 
     newlocationId = "input[name=differentlocation" + numId+ "']"; 

    alert(newlocationId); 
}); 

實施例:http://jsfiddle.net/qud32/

或者,也可以使用選擇 「屬性開頭」 安迪暗示。