Jquery ui 使用jQuery UI selectmenu的特殊字符和id

Jquery ui 使用jQuery UI selectmenu的特殊字符和id,jquery-ui,jquery-ui-selectmenu,Jquery Ui,Jquery Ui Selectmenu,当使用特殊字符时,例如。或者/对于jQuery UI selectmenu的id,当单击“打开”菜单中的一个选项时,我确实会遇到JS语法错误。 我知道在jQuery中我需要转义特殊字符,但这段代码似乎深入到库本身。 我不确定在我报告错误之前是否遗漏了什么,所以我想得到一些提示 我将jQueryUI版本1.11.1与jQuery1.11.1一起使用,但在中尝试了从1.10开始的其他版本 TIA您可以使用name属性或document.getElementById()来获取无法用作jQuery选择器

当使用特殊字符时,例如。或者/对于jQuery UI selectmenu的id,当单击“打开”菜单中的一个选项时,我确实会遇到JS语法错误。 我知道在jQuery中我需要转义特殊字符,但这段代码似乎深入到库本身。 我不确定在我报告错误之前是否遗漏了什么,所以我想得到一些提示

我将jQueryUI版本1.11.1与jQuery1.11.1一起使用,但在中尝试了从1.10开始的其他版本


TIA

您可以使用name属性或
document.getElementById()
来获取无法用作jQuery选择器的Id:

var elt = $(document.getElementById(".speed/"));
var elt = $("[name='.speed/']");
如果错误是由库本身生成的,那么这并没有多大帮助。但是,您可以尝试使用以下方法替换id中的无效字符:

elt.attr("id", elt.attr("id").replace(".", "dot").replace("/", "slash"));
// ... possibly include other characters we don't like

当然,正确的方法是使用没有点和斜线的id-s。这是一种相当草率的解决方法,但它会奏效小心使用

可能的重复不是真正的重复:我知道如果不使用这些特殊字符,问题可以避免!但在我的例子中,id是由框架生成的,我不能放弃这些字符!谢谢,bglt,但这不是真正的问题。如果我需要jQuery选择器,我会使用
函数escId(id){return id.replace(/(:\\.\\\[\\\]\\\/)/g,“\\\\\$1”);}
对id进行转义,并像这样调用它
$('\\\''+escId('.inp.begda/gs\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\!看起来小部件在内部读取和使用id时没有这样的转义逻辑。我想,这就是为什么我包含第二行。它将替换(外部生成的)ID,使用“<代码> $”。UI库不会抱怨这不是一个选项,那么您应该考虑使用不兼容的库,并寻找一个只使用一个或另一个而不是有趣的解决方案:错误消息似乎没有任何效果。选择工作非常好!我仍然会考虑您的重命名选项,但由于输入字段的id是通过我们的框架构建的,以允许映射到服务器端(控制器)属性,这似乎是有风险的。回到我最初的问题:这应该被认为是一个错误报告,还是算作“意外”错误报告用我应该固定在我这边的那个?
var elt = $(document.getElementById(".speed/"));
var elt = $("[name='.speed/']");
elt.attr("id", elt.attr("id").replace(".", "dot").replace("/", "slash"));
// ... possibly include other characters we don't like