2

如果我在 :contains 选择器中包含一个括号,我会收到错误消息。

例如

$("a:contains('Speed (mph')")

返回错误

语法错误,无法识别的表达式:(mph')

如果我在末尾添加右括号,则该语句运行良好。但是,我需要能够查询通常有一个括号的位置。

这里发生了什么,我该如何回避这个?

编辑

在我的实际代码中, :contains 部分作为变量传入

例如

var searchText = 'Speed (mph';
var result = $("a:contains('" + searchText  + "')");
4

2 回答 2

2

你应该可以使用$("a:contains('Speed \\(mph')")

来自http://api.jquery.com/category/selectors/

如果您希望使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[]^`{|}~ )作为 a 的文字部分name,您必须使用两个反斜杠转义字符:\。例如,如果您有一个 id="foo.bar" 的元素,则可以使用选择器 $("#foo\.bar")。W3C CSS 规范包含有关有效 CSS 选择器的完整规则集。

于 2011-06-28T03:40:54.010 回答
0

从 Matthew Flaschen 的链接中,您可以像这样使用过滤器功能:

    var searchRegex = new RegExp("Speed \\(mph","g");
    var result = $('a').filter(function(i, el) {
        return $(el).text().match(searchRegex);
    });
于 2011-06-28T03:37:52.160 回答