2

我要选择它具有以下ID输入框:包含引用的jquery属性选择器变量?

id="Peoples' Choice"

如果我手动输入与转义字符的选择,它的工作原理:

$("[id='Peoples\\' Choice']")

但是,如果我使用一个变量,它似乎并不工作:

var theID = "Peoples' Choice"; 
var sel = "[id='" + theID + "']" 
chk = $(sel); 

这喷出来语法错误说无法识别的表达式。 我甚至尝试用双反斜杠+报价替换theID中的报价。

帮助?

回答

6

你可以在你的属性选择用逃避它在变量前的特殊字符。

您可以使用下面的正则表达式:

var sel = "[id='" + theID.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1') + "']" 

DEMO

+0

这适用于你的榜样,但是当有一个在ID空间失败:(这可能是错误的HTML,但有什么办法来处理这个片段? – ForeverLearnNeverMaster 2012-02-15 07:00:43

+0

我已经更新了小提琴,它作为以及与空间......虽然空间不容许的ID,所以你不应该有他们。 – 2012-02-15 07:19:56

+0

是的,它的作品。谢谢。 – ForeverLearnNeverMaster 2012-02-15 07:25:31

4

id s不能在它的空间。只需使用peoples-choice
从W3,http://www.w3.org/TR/html4/types.html

ID和名称标记必须以字母([A-ZA-Z])开始和之后可以是任意数量的字母 ,数字([0-9]),连字符(“ - ”), 下划线(“_”),冒号(“:”)和句点(“。”)。

+0

那么,显然现有的系统,我的工作可以有它:/ jQuery的可能不给它该死? – ForeverLearnNeverMaster 2012-02-15 06:45:19

+0

他们不能,检查http://mathiasbynens.be/notes/html5-id-class – Matijs 2012-02-15 06:47:52

+1

这不是有效的HTML。只要使用'人民选择'。请参阅编辑。 – elclanrs 2012-02-15 06:49:06

1

我们不能把(')在 ID,但你仍然可以试试这个

试试这个

var theID = "Peoples\' Choice"; 
var sel = "[id='" + theID + "']" 
chk = $(sel); 

而不是

var theID = "Peoples' Choice"; 
var sel = "[id='" + theID + "']" 
chk = $(sel);