2017-03-31 91 views
0

我需要爲jquery編寫css選擇器,匹配包含最後一個點之後的一些文本的id的元素。 類似$(div[id*='cow'])的東西 - 但更強,因爲只有在文本位於最後一個點後面時才需要它。 因此,把最後一個點後的所有內容都看一遍,看看文本是否包含我的字符串。 例如文本查找 - jquery css選擇器與id匹配的元素包含最後一個點後的特定文本

<div id ='my.very.first.cow'></div> // get it 
<div id = 'my.very.first.cowandcat'></div> //get it 
<div id = 'my.very.firstcow.andcat'></div> //DON'T get it - not after the last dot 

回答

1

您可以使用擴展選擇:

$.extend($.expr[':'],{...... 

的片段:

;(function($){ 
 
    $.extend($.expr[':'],{ 
 
     IdTextAfterLastDot: function(a, b, c) { 
 
      var id = a.id; // get current ID 
 
      var sel = c.pop(); // get the parameter 
 
      var idx = id.substr(id.lastIndexOf('.') + 1).indexOf(sel); 
 
      // 
 
      // If after last dot the id text starts with .... 
 
      // 
 
      return idx == 0; 
 
     } 
 
    }); 
 
})(jQuery); 
 

 

 
// 
 
// Use the new selector 
 
// 
 

 
$('div:IdTextAfterLastDot(cow)').each(function(idx, ele) { 
 
    console.log('selected: ' + ele.id); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 

 
<div id ='my.very.first.cow'></div> 
 
<div id = 'my.very.first.cowandcat'></div> 
 
<div id = 'my.very.firstcow.andcat'></div>

0

要匹配任何以.cow

div[id$='.cow'] {background-color: blue} 
+0

不,我不知道該點之後的全部文本。我只是想在文本部分找到我的字符串。 catandcow,cowandcat,dogandcowandcat,cow - 只要它們在最後一個點後面,它們都是匹配的。 –

+0

哦,我明白了。我誤解了。它需要用'jQuery'編寫 –

0

IM結束,如果我理解您的問題不是舒爾但嘗試這個,如果有幫助。

$("div").each(function(){ \t 
 
\t var item = $(this); 
 
    var arr = item.attr("id").split('.'); 
 
    console.log(arr) 
 
    n = arr[arr.length-1].indexOf("cow"); 
 
    if(n!=-1) 
 
    { 
 
    \t alert(item.attr("id"));  
 
    } \t 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id ='my.very.first.cow'></div> // get it 
 
<div id = 'my.very.first.cowandcat'></div> //get it 
 
<div id = 'my.very.firstcow.andcat'></div> //DON'T get it - not after the last dot

0

你可以做這樣的事情:

var ids = $('div'); 
 
$.each(ids,function(index,value){ 
 
    var ids_split = this.id.split('.'), id_length = ids_split.length, last_class=ids_split[id_length-1], search_term = "cow"; 
 
if (last_class.includes(search_term)) { 
 

 
    $(this).addClass('cows_only'); 
 
    
 
    // only .cow is selected 
 
} 
 

 
});
<div id ='my.very.first.cow'></div> // get it 
 
<div id = 'my.very.first.cowandcat'></div> //get it 
 
<div id = 'my.very.firstcow.andcat'></div> //DON'T get it - not after the last dot

這個迭代您的div並抓住其最後的ID。在某個地方有「牛」。這裏是一個小提琴: jsfiddle

請注意,只有在最後一個點之後,類纔會被添加到帶有「奶牛」的div。

相關問題