jQuery:无法识别的表达式(绕过此错误)

时间:2013-12-21 11:14:55

标签: javascript jquery

jQuery("input[name=a.b.c]")

使用jQuery 1.10.2或1.9.1执行此行会产生以下消息:

“语法错误,无法识别的表达式:input:hidden [name = a.b.c]”。

我理解核心问题,即点不会被转义或引出。这可行:

jQuery("input[name='a.b.c']")

约束是我无法使用错误的选择器更改代码行。这条线是由网站(我不拥有)制作的,它们不能让我改变它。

然而,它们允许我将任意JS文件添加到页面的标题中(这意味着我可以使用不同的jQuery版本甚至编辑jQuery文件)。我的问题是,是否有人知道另一种解决方法,以便jQuery可以在没有引号的情况下应对,因为我无法更改错误的代码。

对于那些说我可以更改名称的人来说,这没有用,因为JS仍然会抛出错误,因为更改元素的名称并不能修复错误的选择器。

由于

3 个答案:

答案 0 :(得分:2)

执行此选择器的正确方法是:

jQuery('input[name="a.b.c"]')

显然你需要编辑创建这一行的算法,jquery无法接受无效的选择器。

答案 1 :(得分:1)

看看这里。

How do I extend jQuery's selector engine to warn me when a selector is not found?

在你的情况下,我会做这样的事情。

var oldInit = $.fn.init;
$.fn.init = function(selector, context, rootjQuery) {
    selector = fixItWithQuotes(selector, context, rootjQuery);
    return new oldInit(selector, context, rootjQuery);
};
我未经测试,但应该给你一个想法。 此外,这可能会给你更多的想法?

http://blog.tallan.com/2012/01/17/customizing-the-default-jquery-selector-behavior/

希望这是有道理的。

答案 2 :(得分:0)

为什么不自己更改名称属性?

var el = $("input"); 
el.attr("name", el.attr("name").replace(/[\d\.]+/g, "")); 
console.log(el.attr("name"));

如果需要,请将其更改回来。 jsFiddle here