1

我在使用containsjquery 时遇到问题。它似乎只接受一个词。不是一个词或两个词。

例子:

$('#div:contains('Word')'); --> This is okay

$('#div:contains('Just another word')'); --> This will return empty/this will not match.

您有遇到此类问题的经验吗?

非常感谢您的回复。

4

3 回答 3

4

您需要的是使用双引号(而不是那些包裹整个选择器的单引号),例如:

$("p:contains('John Resig')");

这将选择正确的段落,其中包含字符串“John Resig”

或者你可以反转它:

$('p:contains("John Resig")');

或者您可以使用旧的转义:

$('p:contains(\'John Resig\')');
于 2009-10-16T23:28:58.957 回答
1

尝试不使用 # 并避免在代码中使用相同的引用:-

$("div:contains('只是另一个词')");

于 2009-10-16T23:32:27.373 回答
0

假设您尚未解决此问题,请从您的评论中获得:

var selected = $(this).find(':selected').text(); 
if (selected.toLowerCase() != "all industries") { 
    if (trim(selected).length > 0) { 
        $("#contact-list-selectable li .contact-info-industry").parent().css("display", "none"); 
        $("#contact-list-selectable li .contact-info-industry:contains('" + selected + "')").parent().css("display", "block"); 
        alert($("li[style='display: block;']").text()); 
}

我假设您打算使用 trim 作为字符串上的方法,或者如果不是,您在其他地方定义了一个 trim 函数。如果这实际上是您的代码的外观并且您没有自定义修剪功能,那么这将是您的第一个问题,它应该是:selected.trim().length

一个潜在的问题是,当您检查 selected 的修剪是否 > 0 时,您在检查包含时不使用 selected 的修剪版本。如果您选择的变量中有任何空格/等,则包含将失败。

这是一个例子。请注意其中的尾随空格selected = "computer science ";是为了演示在这种情况下会发生什么。

如果你改变

 $("#contact-list-selectable li .contact-info-industry:contains('" + selected + "')").parent().css("display", "block");

 $("#contact-list-selectable li .contact-info-industry:contains('" + selected.trim() + "')").parent().css("display", "block");

您可以避免此问题(工作示例,请参见此处,注意尾随空格仍然存在)。

我能想到的唯一另一个问题是,如果您错误地形成了任何选择器,并且它们实际上与您的 DOM 结构不匹配。否则,在当前的 jquery 中一切正常。

于 2013-01-11T00:10:03.063 回答