【问题标题】:JQuery :contains function limit to exact matchJQuery:包含精确匹配的功能限制
【发布时间】:2011-07-26 22:51:11
【问题描述】:

使用 JQuery :contains 函数来决定从 SESSION 变量中选择 select 上的哪个选项。

包含函数匹配了错误的选项,因为它们是一个选项“PADI Open Water”和另一个“PADI Open Water Scuba Instructor”

我们如何限制它以匹配确切的内容而不是更多?

$('option:contains("<?php echo $_SESSION['divelevel'];?>")').attr('selected', 'selected');

【问题讨论】:

  • 你不是说$('option:contains("&lt;?php echo $_SESSION['divelevel'];?&gt;")')吗?
  • 是的,我确实是这个意思。在实际页面上也是这样写的。我的错误

标签: jquery select option contains


【解决方案1】:

尝试使用.filter(),找到您想要的选项。

$('option').filter(function(){
    return $(this).html() == "<?php echo $_SESSION['divelevel'];?>";
}).attr('selected', 'selected');

【讨论】:

  • 谢谢!这让我走上了正确的道路来做我需要的事情: $("#CountyID option").filter(function(){ return $(this).html() == CountySelect}).attr('selected', '选择');
【解决方案2】:

Rocket Hazmat 的回答能够在我当前的项目中为我提供帮助,其中设置了 cookie 值,并且需要突出显示该 cookie 值所属的表行。我最初的代码是:

$(".datalist TBODY TR:has('TD.itemId:contains(" + activeRowCookie + ")')").attr('id', 'activeRow');

在我们意识到表格单元格可以包含 activeRowCookie 值 加上 其他字符之前,这一直很好,但我们需要与单元格的全部内容完全匹配。此外,我们正在寻找包含该确切值的 cell,但随后我们突出显示该单元格所在的 row,而不仅仅是单元格本身。因此,我通过将此处的答案调整为以下内容来使其工作:

$('.datalist TBODY TR TD.itemId').filter(function () {
  return $(this).text() == activeRowCookie;
}).parent().attr('id', 'activeRow');

而且,是的,初始选择器确实需要这样,因为我们不希望它查看 THEAD 元素中的单元格。

【讨论】:

    【解决方案3】:

    尝试添加一个扩展伪函数:

    $.expr[':'].textEquals = $.expr.createPseudo(function(arg) {
        return function( elem ) {
            return $(elem).text().match("^" + arg + "$");
        };
    });
    

    那么你可以这样做:

    $('p:textEquals("<?php echo $_SESSION['divelevel'];?>")').attr('selected', 'selected');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      相关资源
      最近更新 更多