使用单个括号时的jQuery选择器问题

时间:2011-06-24 15:23:11

标签: jquery jquery-selectors escaping contains parentheses

如果我在:contains选择器中包含单个括号,则会出错。

e.g。

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

返回错误

  

语法错误,无法识别的表达式:   (英里每小时')

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

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

修改

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

e.g

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

2 个答案:

答案 0 :(得分:2)

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

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

  

如果你想使用任何一个   元字符(例如   !“#$%&'()* +,。/:;< =>?@ [] ^`{|}〜)   文字的一部分,你必须   用两个逃避角色   反斜杠:\。例如,如果你   有一个id =“foo.bar”的元素,你   可以使用选择器$(“#foo \ .bar”)。   W3C CSS规范包含   关于有效的完整规则   CSS选择器。

答案 1 :(得分:0)

从Matthew Flaschen的链接开始,你可以使用这样的过滤函数:

    var searchRegex = new RegExp("Speed \\(mph","g");
    var result = $('a').filter(function(i, el) {
        return $(el).text().match(searchRegex);
    });