1. 程式人生 > >獲取Class中以xxx開頭的元素

獲取Class中以xxx開頭的元素

嘗試獲取所有class中以m-開頭的元素,首先想到的是CSS Selector,比如p[class^=m-]不過問題是class的值可以有多個,一旦遇到這種a m-1Class就無法識別了,另一種Selector是判斷包含某個字串,類似這樣:p[class^=m-],這種缺點是遇到這種a-m-1 Class同樣會匹配但實際上這種Class並不是以m-開頭。

解決方案就是無法直接用CSS Selector來帥選,但可以用CSS Selector來篩選部分,然後在手動判斷,比如HTML內容是:

<p class="a b m-1"></p>
<p class="m-2">
</p> <p class="a-m-1"></p>

JavaScript:

var elements = $('p[class*=m-]');

for(var i = 0; i < elements.length; i++) {
    var current = elements.eq(i);
    console.log('A: ', current[0].outerHTML);
    var classes = current.attr('class').split(' ');
    for(var j = 0; j < classes.length;
j++) { if (classes[j].lastIndexOf('m-', 0) === 0) { console.log('B: ', current[0].outerHTML); break; } } }

輸出:

A:  – "<p class=\"a b m-1\"></p>"
B:  – "<p class=\"a b m-1\"></p>"
A:  – "<p class=\"m-2\"></p>"
B:  – "<p class=\"m-2\"></p>"
A:  – "<p class=\"a-m-1\"></p>"

可以看到,以B開頭的是準確的結果,以A開頭的是通過CSS Selector初期篩選的結果。