2010-11-08 72 views
2

我使用jQuery和我一樣的循環:如何檢查id名稱是否包含某種模式?

$("span").each(function (index) { 
    var idname = $(this).attr('id'); 
    $("#" + idname).click(function() { 
     window.location.href = "http://" + $(this).attr('id') + "lin.gw"; 
    }); 

}); //end for click attachment to button 

我想遍歷其中id包含*raid*的元素。它的語法是什麼?

回答

5

使用attribute-contains selector

$("span[id*=raid]").click(function(){ 
    window.location.href = "http://"+ this.id +"lin.gw"; 
}); 
+0

這也是一個好方法。 – ward87 2010-11-08 11:42:22

+0

不錯,謝謝! – Arman 2010-11-08 11:51:35

0

「喜歡」raid「'我認爲你的意思是它包含」raid「。最簡單的方法是測試一個正則表達式:/raid/.test(idname)。如果它是「raid」則返回true,如果不是,則返回false

0

你可以使用這個正則表達式。以下是正則表達式郵件匹配的示例。你可以編寫自己的正則表達式,並檢查「idname」是否包含「raid」。

function IsValidEmail(email) { var filter = /^([\w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([\w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$/; return filter.test(email); }

1

要做到這一點是使用filter刪除元素的最好的方式,你不希望:

$("span").filter(function() { 
    if (this.id.toLowerCase().indexOf('raid') !== -1) { 
     return true; 
    } else { 
     return false; 
    } 
}).click(function(){ 
    window.location.href="http://"+this.id+"lin.gw"; 
}); 

它使用this.id(遠比$(this).attr('id')更有效)並且使用單個呼叫而不是使用單個呼叫clickeach,這是更清晰,並提供輕微的性能提高。

相關問題