我有一个脚本替换文本并添加一个类。它的效果很好,但我有两个类都有" new"在他们,然后包含不起作用。如何匹配字符串中的所有单词?
代码:
$('body').ready(function(){
$( "span.conditionHilite:contains('Begagnat')" ).text('Refurbished').addClass("refurbHilite" );
$( "span.conditionHilite:contains('New Spares')" ).text('New spares').addClass( "refurbHiliteSpares" );
$( "span.conditionHilite:contains('New')" ).text('New').addClass( "refurbHiliteNew" );
});
答案 0 :(得分:2)
要选择包含确切文本值的范围,请尝试:
$('span').filter(function(){ return $(this).text() == 'New Spares'; }).text('New spares').addClass( "refurbHiliteSpares" );
.filter允许您将逻辑应用于元素,并仅返回与您的测试匹配的元素。
答案 1 :(得分:1)
将contains
更改为has
$(function(){
$( "span.conditionHilite:has('Begagnat')" ).text('Refurbished').addClass("refurbHilite" );
$( "span.conditionHilite:has('New Spares')" ).text('New spares').addClass( "refurbHiliteSpares" );
$( "span.conditionHilite:has('New')" ).text('New').addClass( "refurbHiliteNew" );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="conditionHilite">Refurbished</span> | <br />
<span class="conditionHilite">New spares</span> <br />
<span class="conditionHilite">New</span> <br />
答案 2 :(得分:0)
您的第三行返回与第二行相同的对象,因为您使用的选择器包含相同的字符串,即&#34; New&#34;。它们都匹配DOM中的相同元素。
我建议改用jQuery filter method。使用.filter()并使用.text()方法检查span的内容。如果.filter()返回true,则添加类,颜色等。