查找包含特定文本字符串的类的跨度 JQuery

3
我正在使用JQuery查找包含文本字符串的元素,该元素具有class属性,但也可能包含其他文本。
var not_breaks = element.filter("span.this_text");

这适用于 class="this_text" 的范围,但不适用于 class="this_text_and_more_text" - 我需要同时搜索两者。
4个回答

3
在这种情况下,您可以使用包含属性选择器:
var not_breaks = element.filter("span[class*='this_text']");

你也可以使用属性值以特定字符开头的选择器,但请注意,只有在元素上有单个类时才能保证其有效。
var not_breaks = element.filter("span[class^='this_text']");

如果有一个类class="this_text_and_dont_include",并且这个类不应该被包含,它仍然会被包含,对吗? - guradio
1
可以这样做,但这不符合原始问题的要求。如果是这种情况,我建议提供一个filter()函数来提供更具体的逻辑。 - Rory McCrossan
我使用了第一种方法,效果非常好!对于这种情况,其他文本是无关紧要的,因为每个类都非常不同,但需要包含在内。 - Ruth Young

0
我需要同时搜索两个内容。 我可以使用选择器组实现:
var not_breaks = element.filter("span.this_text, span.this_text_and_more_text");
//                      first ---^    comma ---^ ^---- second

这将保留组中与任一选择器匹配的元素。

例如:

var element = $("span");
var not_breaks = element.filter("span.this_text, span.this_text_and_more_text");
not_breaks.css("color", "green");
<div><span>Not a match</span></div>
<div><span class="this_text">this_text</span></div>
<div><span>Not a match</span></div>
<div><span class="this_text_and_more_text">this_text_and_more_text</span></div>
<div><span>Not a match</span></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


0
我们可以使用 hasclass 获取所有名称为 span class 的元素,这对你有帮助吗?
var pare=$('span');
$( pare ).each(function() {
if($(this).hasClass('httext')){
    alert($(this).html())
}

});


0
你可以使用正则表达式来检索任何你需要的序列。
var regex = new RegExp("this_txt");
var elem = $("span").filter(function () {
                    return regex.test($(this).attr('class')); 
           });
console.log(elem.length);

只有当序列存在时,regex.test函数才会返回true。

这是fiddle链接

https://jsfiddle.net/yt1cr2zb/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接