使用变量:contains - 如何

时间:2009-08-13 21:29:07

标签: javascript jquery jquery-plugins

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

这是我的代码:

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

 });

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

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

由于

6 个答案:

答案 0 :(得分:3)

尝试:

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

答案 1 :(得分:2)

您也可以使用Traversing/contains

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

答案 2 :(得分:1)

变化:

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

为:

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

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

答案 3 :(得分:1)

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

现在优先于deprecated

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

(由Crescent Fresh评论)

答案 4 :(得分:0)

这一行应该是:

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

答案 5 :(得分:0)

这是特殊字符保存版本,使用过滤器代替不推荐使用的包含方法。

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