2013-04-10 67 views
0

我已經研究了這個主題,並且我假設沒有通配符用於我想要做的事情之前作爲最後一招。用於在選擇器中使用atttributes的JQuery通配符

我需要從文檔中拉出所有文本輸入元素並將其添加到數組。但是,我只想添加具有ID的輸入元素。

我知道你可以在使用ID選擇器(如$(#\ S *))時使用\ S *通配符,但是我不能使用它,因爲我需要僅通過文本類型來篩選結果,所以我按屬性搜索。

目前,我有這樣的:

values_inputs = $("input[type='text'][id^='a']"); 

這工作我怎麼想它,但它帶來的回只用「A」開頭的文字輸入元素。我想讓所有的文本輸入元素都帶有任何'id'。 我不能使用:

values_inputs = $("input[type='text'][id^='']"); //or 
values_inputs = $("input[type='text'][id^='*']"); //or 
values_inputs = $("input[type='text'][id^='\\S*']"); //or 
values_inputs = $("input[type='text'][id^=\\S*]"); 
//I either get no values returned or a syntax error for these 

我想我只是在尋找*在SQL相當於jQuery的屬性選擇。 有沒有這樣的事情,或者我只是以錯誤的方式接近這個問題?

回答

1

其實,這是很簡單:

var values_inputs = $("input[type=text][id]"); 
+0

哦,我的天啊!你是對的。我不敢相信這很簡單。謝謝。 – rocklandcitizen 2013-04-10 19:49:23

1

你的邏輯有點含糊。我相信你不要想要的元素任何身份證,而是元素其中身份證不是等於一個空字符串。用這個。

values_inputs = $("input[type='text']") 
    .filter(function() { 
     return this.id != ''; 
    }); 
+0

實際上,我正在修補別人的html代碼。所以沒有一個表單元素有id。我只需要將id添加到我需要使用的id。我需要在文檔的其餘部分隨機地過濾掉所有其他隨機輸入元素。所以我猜想用id添加元素會更容易,因爲我將它編碼並在後面的函數中使用。 – rocklandcitizen 2013-04-10 19:52:37

1

試試你的選擇更改爲:

$("input[type='text'][id]") 
0

我想出了另一種方式來使用通配符非常簡單。這幫了我很多,所以我想我會分享它。

您可以通過以下方式在選擇器中使用屬性通配符來模擬'*'的使用。比方說,你已經動態生成的元素與除了代表指數動態變化的數字相同的命名約定創建的窗體:

id='part_x_name' //where x represents a digit 

如果您只想檢索文字輸入那些有標識的某些部分名稱和元素類型,你可以做到以下幾點:

var inputs = $("input[type='text'][id^='part_'][id$='_name']"); 

,瞧,它會檢索所有那些有能力在字符串末尾的ID字符串的開頭「PART_」和「_name」文本輸入元素。如果您有類似

id='part_x_name_y' // again x and y representing digits 

你可以這樣做:

var inputs = $("input[type='text'][id^='part_'][id*='_name_']"); //the *= operator means that it will retrieve this part of the string from anywhere where it appears in the string. 

根據其他的id的名稱是什麼它可能會開始變得有點棘手,如果其他元素的ID有類似的命名約定你文件。您可能需要在指定通配符方面多一點創意。在大多數情況下,這將足以滿足您的需求。