jQuery 没有提供内置的方法来处理这个问题。您必须遍历子文本节点并手动搜索您的字符串:
$('span').each(function () {
var span = this;
$.each(span.childNodes, function () {
if (this.nodeType == 3 && this.nodeValue.indexOf('Red') >= 0 ) {
$(span).css('color', 'red');
return false;
}
});
});
这是小提琴:http: //jsfiddle.net/TEnX7/
如果您发现自己经常使用它,并且不想一直把它写出来,您可以创建自己的自定义过滤器表达式:
jQuery.expr[':']['contains-direct'] = $.expr.createPseudo(function(text) {
return function (elem) {
var contains = false;
$.each(elem.childNodes, function () {
if (this.nodeType == 3 && this.nodeValue.indexOf(text) >= 0 ) {
contains = true;
return false;
}
});
return contains;
}
});
然后你就可以直接在你的代码中使用它,就像 jQuery 一样contains
:
$('span:contains-direct(Red)').css('color', 'red');
这是小提琴:http: //jsfiddle.net/F9xZ8/