jQuery选择器,其中text =某个值

22 jquery jquery-selectors

我有一个对象(在这种情况下是来自js-kit的评级对象),如果评级值为"未评级",我想使其不可见.我无法获得正确的jQuery选择器来执行此操作.

即使下面的代码看起来应该可行,但事实并非如此.

$(".js-rating-labelText:contains('unrated')").css("visibility", "hidden");  
Run Code Online (Sandbox Code Playgroud)

.js-rating-labelText 是一个在文本上设置的类.

tgm*_*dbm 22

您可以创建自己的选择器方法

例如,如果您希望能够执行以下操作:

$('.js-rating-label:hasText(unrated)');
Run Code Online (Sandbox Code Playgroud)

您可以hasText按如下方式定义方法

$.expr[':']['hasText'] = function(node, index, props){
  return node.innerText.contains(props[3]);
}
Run Code Online (Sandbox Code Playgroud)

props[3] 包含':hasText'后括号内的文本.

  • 这是一个很好的答案。我不得不将返回函数更改为: return node.innerText.indexOf(props[3]) > -1; (2认同)

bri*_*ris 19

有没有其他方法可以根据文本内容选择元素?

试试这个:

$('.js-rating-labelText').filter(function(){
  return (/unrated/i).test($(this).text())
}).css('visibility', 'hidden');
Run Code Online (Sandbox Code Playgroud)


小智 7

也许问题在于:contains('Unrated')功能的一部分.将文本更改为任意随机值会产生相同的结果:

$("#ratingDiv:contains('somerandomtext')").hide();
Run Code Online (Sandbox Code Playgroud)