【问题标题】:jQuery selector problem when using a single parenthesis使用单括号时的jQuery选择器问题
【发布时间】:2011-09-22 03:16:12
【问题描述】:

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

例如

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

返回错误

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

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

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

编辑

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

例如

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

【问题讨论】:

  • 感谢@Matthew Flaschen,但该解决方案似乎只处理查找仅包含一个左括号的元素文本。我需要将:contains 部分作为变量传递,可以是speed(mp/hspeed(mp/h)。我无法使用 .match 函数来执行此操作(我有点 jQuery 菜鸟) - 有什么提示吗?

标签: jquery jquery-selectors escaping contains parentheses


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 为什么必须在引用的值中转义?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2011-06-22
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多