簡體   English   中英

jQuery通配符,用於在選擇器中使用屬性

[英]JQuery Wildcard for using atttributes in selectors

我已經對該主題進行了廣泛的研究,並且在我假設沒有想要做的通配符之前,我要求做最后一招。

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

我知道在使用$(#\\ S *)這樣的id選擇器時可以使用\\ 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屬性選擇器尋找*的等效項。 沒有這樣的事情,還是我只是以錯誤的方式來解決這個問題?

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

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

嘗試將選擇器更改為:

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

實際上,這很簡單:

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

我想出了一種非常簡單地使用通配符的方法。 這對我很有幫助,所以我想分享一下。

您可以通過以下方式在選擇器中使用屬性通配符來模擬對“ *”的使用。 假設您具有動態生成的形式,其中使用相同的命名約定創建元素,但動態更改表示索引的數字除外:

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

如果您只想檢索包含id名稱和元素類型的某些部分的文本輸入,則可以執行以下操作:

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的名稱,可能會變得有些棘手。 在指定通配符時,您可能需要更多的創意。 在大多數情況下,這足以滿足您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM