Javascript 如何根据jQuery中的所有内容选择元素?

Javascript 如何根据jQuery中的所有内容选择元素?,javascript,jquery,Javascript,Jquery,我有一系列的,如下所示: <div>.co.uk</div> <div>.com</div> <div>.gb.com</div> <div>.uk.com</div> <div>.net</div> 这将导致.gb.com和.uk.comdiv也被选中。您最好的选择是使用.each()遍历div,并通过检查$(This).text()来检查回调中的内容: 您

我有一系列的
,如下所示:

<div>.co.uk</div>  
<div>.com</div>  
<div>.gb.com</div>  
<div>.uk.com</div>  
<div>.net</div>

这将导致
.gb.com
.uk.com
div也被选中。

您最好的选择是使用
.each()
遍历div,并通过检查
$(This).text()来检查回调中的内容:


您可以使用
filter
方法检查内容:

$('div').filter(function(){
  var t = $(this).text();
  return t == '.co.uk' || t == '.com' || t == '.net';
})
您可能仍然希望删除选择器中尽可能多的元素,以减少过滤器函数必须检查的元素数。即使
包含的
伪类无法进行精确匹配,也可以使用它来减少结果:

$('div:contains(".co.uk"), div:contains(".com"), div:contains(".net")`).filter(function(){
  var t = $(this).text();
  return t == '.co.uk' || t == '.com' || t == '.net';
})

我会用一个过滤器:

jQuery.fn.pickDomains = function() {
  var domains = jQuery.makeArray(arguments);
  return this.filter(function(_, element) {
    for (var d = 0; d < domains.length; ++d)
      if (domains[d] == $(element).text()) return true;
    return false;
  });
};

我也曾多次遇到过这个问题,尤其是在我开发原型时。可能只有在div中循环并检查子字符串的方法,可以在上面找到代码。

+1有趣的是,您与我编写了完全相似的代码示例,包括变量名!伙计,你有很好的编码风格!;)我将删除我的回复。奇怪的是,这似乎只是返回一个div(第一个匹配)。我读过.filter()函数,这应该可以用,但不行。@Kev:我测试了两个版本,它们确实返回了三个元素。(第二个版本中只有一个回勾,我必须改为撇号才能让它工作。)
$('div:contains(".co.uk"), div:contains(".com"), div:contains(".net")`).filter(function(){
  var t = $(this).text();
  return t == '.co.uk' || t == '.com' || t == '.net';
})
jQuery.fn.pickDomains = function() {
  var domains = jQuery.makeArray(arguments);
  return this.filter(function(_, element) {
    for (var d = 0; d < domains.length; ++d)
      if (domains[d] == $(element).text()) return true;
    return false;
  });
};
var theDivs = $('div.whatever').pickDomains('.co.uk', '.com', '.net');