簡體   English   中英

檢查id是否匹配模式

[英]Check if id matches pattern

我不是正則表達式極客,我已經搜索了一段時間,但我真的不知道該怎么做:我需要獲取所有輸入,其ID類似於mywordsomenumber 例如,將所有輸入與id keyword1 keyword2等匹配。

我試過了

a=$("[id^=tokenfield(\d+)]");
a=$("[id^=tokenfield(0-9)]");

和其他一些,但是我對正則表達式的理解不是很充分,而且似乎無法深入了解正則表達式

有人可以幫忙嗎? 謝謝

我認為您不能使用RegEx來匹配屬性。 [id ^ = tokenfield]匹配以精確字符串'tokenfield' 開頭的屬性。 這是“開頭為”匹配,而不是“正則表達式匹配”。

您可以使用手動過濾器。

這是一個JSFiddle: http//jsfiddle.net/itsananderson/U233z/

基本上,您會找到所有以固定文本開頭的元素(示例中為“ item”),然后根據實際的正則表達式匹配項過濾以數字結尾的id。

var a = $('[id^=item]').filter(function() {
    return $(this).attr('id').match(/item[0-9]+/); 
});

編輯 :剛注意到有人已經在評論中給出了類似的答案。 無論如何,希望這對某人有用

jQuery的Atribute以選擇器開頭不支持正則表達式,它僅適用於確切的字符串。

您可以選擇以"tokenfield"開頭的節點,然后在javascript中進行額外檢查:

$('[id^="tokenfield"]').filter(function(){
    // extract the remaining part :
    var tail = this.id.slice(10); // 10 == "tokenfield".length
    // run it through parseInt :
    var number = parseInt(tail, 10);

    // isNaN will tell you if the parseInt failed :
    var isNumber = !isNaN(number);

    return isNumber;
});

但是,如docs中所述:

此選擇器對於標識由服務器端框架生成的頁面中的元素很有用,該服務器端框架生成具有系統元素ID的HTML。 但是,它比使用類選擇器要慢,因此,如果可以的話,請利用類將相似的元素分組。

如果您可以控制生成html的代碼,則最好生成具有以下結構的節點:

<div class="tokenfield" data-token="123"></div>
<div class="tokenfield" data-token="456"></div>
<div class="tokenfield" data-token="789"></div>

用法示例:

$('.tokenfield').each(function(){
    var number = $(this).attr('data-token');
    // do something ...
 });

暫無
暫無

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

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