我在使用contains
jquery 时遇到问题。它似乎只接受一个词。不是一个词或两个词。
例子:
$('#div:contains('Word')'); --> This is okay
$('#div:contains('Just another word')'); --> This will return empty/this will not match.
您有遇到此类问题的经验吗?
非常感谢您的回复。
我在使用contains
jquery 时遇到问题。它似乎只接受一个词。不是一个词或两个词。
例子:
$('#div:contains('Word')'); --> This is okay
$('#div:contains('Just another word')'); --> This will return empty/this will not match.
您有遇到此类问题的经验吗?
非常感谢您的回复。
您需要的是使用双引号(而不是那些包裹整个选择器的单引号),例如:
$("p:contains('John Resig')");
这将选择正确的段落,其中包含字符串“John Resig”
或者你可以反转它:
$('p:contains("John Resig")');
或者您可以使用旧的转义:
$('p:contains(\'John Resig\')');
尝试不使用 # 并避免在代码中使用相同的引用:-
$("div:contains('只是另一个词')");
假设您尚未解决此问题,请从您的评论中获得:
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 中一切正常。