使用变量: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; })