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/