【问题标题】:using a variable in :contains - how to在 :contains 中使用变量 - 如何
【发布时间】:2009-08-13 21:29:07
【问题描述】:

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

这是我的代码:

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

 });

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

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

谢谢

【问题讨论】:

  • 只是一个快速的,为了使您的代码更具可读性,请选择代码并在编辑器中点击代码示例。

标签: javascript jquery jquery-plugins


【解决方案1】:

试试:

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

【讨论】:

    【解决方案2】:

    您也可以使用Traversing/contains

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

    【讨论】:

    • 我最喜欢这种方式,如果可以的话,我总是避免在查询中使用字符串连接。它更安全、更清晰,而且看起来更干净
    • $.fn.contains() 在 1.2 中已弃用,并在 1.3 中替换为过滤器表达式。见docs.jquery.com/Release:jQuery_1.2#Removed_Functionality
    • @cobbal - 我很好奇,与选择器字符串连接相比,这种方法更安全的是什么?
    【解决方案3】:

    变化:

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

    到:

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

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

    【讨论】:

    • 谢谢,我很困惑,因为我认为如果它不在引号中,它会知道它是一个变量......仍在学习......
    【解决方案4】:
    $('ul#accordion a').filter(':contains(' + bctext + ')'  
    

    现在首选deprecated

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

    (由 Crescent Fresh 评论)

    【讨论】:

      【解决方案5】:

      这一行应该是:

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

      【讨论】:

        【解决方案6】:

        这是一个 special-character-save 版本,它使用 filter 而不是已弃用的 contains 方法。

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

        【讨论】:

          猜你喜欢
          • 2010-12-29
          • 2014-07-18
          • 2018-12-05
          • 1970-01-01
          • 1970-01-01
          • 2012-06-16
          • 2017-10-07
          • 2021-12-17
          • 1970-01-01
          相关资源
          最近更新 更多