我在电子商务网站上使用手风琴菜单。菜单保持打开状态,直到产品页面为止。在该页面上,我尝试使用面包屑来匹配菜单中的文本,然后应用一个类来打开菜单到页面的正确类别。
这是我的代码:
$(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))
但它没有用。这是我的语法吗?
由于
答案 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; })