JQuery:包含完全匹配的函数限制

时间:2011-03-31 14:09:30

标签: jquery select option contains

使用JQuery:包含用于决定从SESSION变量中选择哪个选项的函数。

contains函数匹配错误选项,因为它们是'PADI Open Water'选项和另一个'PADI Open Water Scuba Instructor'

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

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

3 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:0)

Rocket Hazmat的回答能够帮助我完成当前项目,其中设置了cookie值,并且需要突出显示该cookie值所涉及的表行。我原来的代码是:

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

在我们意识到表格单元格可以包含activeRowCookie值 plus 其他字符之前,哪个工作正常,但我们需要与单元格的整个内容完全匹配。此外,我们正在寻找包含该精确值的单元,但我们突出显示该单元所在的,而不仅仅是单元本身。所以我通过调整答案来实现以下目的:

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

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

答案 2 :(得分:0)

尝试添加extend伪函数:

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

然后你可以这样做:

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