使用变量:contains – 如何

我在电子商务网站上使用手风琴菜单。 菜单保持打开状态,直到产品页面。 在该页面上,我尝试使用面包屑来匹配菜单中的文本,然后应用一个类来打开菜单到页面的正确类别。

这是我的代码:

$(document).ready(function(){ var bctext = $('#ProductBreadcrumb ul li:last-child').prev('li').children().text(); $('ul#accordion a:contains(bctext)').parent().parent().addClass('special'); }); 

变量返回正确的文本,如果我将匹配的字符串(“Tomato Sauces”)放在:contains它就像我想要的那样工作并应用该类。 但是,当我使用bctext变量时它不会工作。

我也尝试a:contains($(bctext))并没有用。 这是我的语法吗?

谢谢

尝试:

 $('ul#accordion a:contains(' + bctext + ')') 

你也可以使用Traversing / contains :

 $('ul#accordion a').contains(bctext); 

更改:

 $('ul#accordion a:contains(bctext)').parent().parent().addClass('special'); 

至:

 $('ul#accordion a:contains(' + bctext + ')').parent().parent().addClass('special'); 

第一种方式,即你拥有它的方式,告诉JavaScript使用字符串’bctext’作为contains参数。 你真正想要的是bctext变量中包含的字符串。 因此,您必须在引号之外使用它并使用连接来创建选择器字符串。

 $('ul#accordion a').filter(':contains(' + bctext + ')' 

现在优先于已弃用的

 $('ul#accordion a').contains(bctext); 

(由Crescent Fresh评论)

这一行应该是:

 $('ul#accordion a:contains(' + bctext + ')').parent().parent().addClass('special'); 

这是一个特殊字符保存版本,它使用filter而不是deprecated contains方法。

$('ul#accordion a').filter(function () { return $(this).text() == bctext; })