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');