2011-03-17 117 views
3

我不是一個Javascript大師,因爲我做更多的服務器端工作,所以我正在努力與此。我已經找到了一些如何做到這一點。基本上,我有一系列元素的ID以字符串「tagRow_」開頭,我需要返回所有實際元素ID的列表,因爲我不僅需要元素,還需要元素的ID,因爲我需要解析服務器端的每個唯一結尾以確定它對應的內容。Jquery,獲取ID爲「開頭」字符串的所有元素的ID字符串列表?

我發現下面的代碼來獲取所有元素,但我不確定它是什麼返回至於列表或什麼,如果任何人可以提供建議如何返回一個字符串id名稱列表,我將不勝感激。謝謝

編輯:我其實需要做一個無線電輸入字段,這是錯誤的,我把DIV放在我自己的例子中。它工作正常的一個DIV,但不是爲無線輸入正常工作象下面這樣:

<input id="tagRow_ddd" type="radio" value="h"> 
       <input id="tagRow_ddd" type="radio" value="p"> 
        <input id="tagRow_ddd" type="radio" value="r"> 
        <input id="tagRow_ddd" type="radio" value="c"> 

$("input[id^='tagRow_']").each(function() { 

    var id = this.id, 
     idNumber = id.replace(/\D+/, ''); 
    document.body.innerHTML += idNumber + '<br />'; 
}); 

http://jsfiddle.net/fD7fP/3/

回答

13

Live Demo

var elements = []; 

$("div[id^='tagRow_']").each(function(){ 
    elements.push(this.id); 
}); 

var stringOfElementIDs = elements.toString(); 
+0

實際上我想用一個輸入字段,我在OP中犯了一個錯誤,似乎它不以相同的方式作爲DIV – Rick 2011-03-17 05:41:28

+0

@Rick嘗試這個http://jsfiddle.net/loktar/McyCF/4/你正在尋找數字,所以如果你在結尾離開_ddd它不會找到數字,所以在小提琴中我將_ddd改爲了數字。 – Loktar 2011-03-17 13:15:59

1
$("div[id^=tagRow_]").each().... 

例如:

$("div[id^='tagRow_']").each(function() {  
    alert(this.id); 
}); 
1

你可以在數客戶端也是如此。

$("div[id^='tagRow_']").each(function() { 

    var id = this.id, 
     idNumber = id.replace(/\D+/, ''); 

    // idNumber contains the digits that were in the id 

}); 

jsFiddle

+0

更新OP與問題,欣賞這一個的幫助 – Rick 2011-03-17 05:46:50

0

這將返回匹配的DOM元素(如jQuery的對象)的列表。所以你必須循環遍歷它並把ID放在一個單獨的數組中。

var matching_els = $("div[id^='tagRow_']"), ids = []; 
for(var i=0; i<matching_els.length; i++){ 
    ids.push(matching_els[i].attr("id"); 
} 
// send ids back to server 
+0

你有一個失蹤).attr(「id」) – Loktar 2011-03-17 02:38:41

13

嘗試以下方法:

var ids = $("div[id^='tagRow_']").map(function() { 
    return this.id; 
}).get(); 

這將返回所有的ID的數組。來自此文章的更多信息:Use jQuery to extract data from HTML lists and tables

+0

嘆息..我總是忘記地圖!無論如何,這是提供的最優雅的解決方案。 – Loktar 2011-03-17 02:37:14

+1

ARH !! $(elem).map(callback(index,domElement))和jQuery.map(array,callback(elementOfArray,indexInArray))之間有區別:在$(elem).map()頁面上[api.jquery.com/map /]它說:「通過函數傳遞當前匹配集合中的每個元素,產生一個包含返回值的新jQuery對象。[...]如果你想處理一個普通的數組或對象,可以使用jQuery。地圖()代替。「 – mlunoe 2013-01-09 14:08:05

+0

+1我更喜歡這個解決方案,因爲你沒有使用閉包來獲得ID。 – pedromanoel 2013-11-06 12:08:09

相關問題