Javascript jQuery通过Id和空格以及Via变量查找元素

Javascript jQuery通过Id和空格以及Via变量查找元素,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我能够通过id定位元素的一个元素,并在id硬编码时添加一个类,例如: var tableId = el.id; $('#' + tableId).find("[id='Checkout On']").addClass('highlight'); 但是,我希望将“Checkout On”作为变量传递,例如: var tableId = el.id; var childEl = col.id; $('#' + tableId).find("[id=" + childEl + "]").addC

我能够通过id定位元素的一个元素,并在id硬编码时添加一个类,例如:

var tableId = el.id;

$('#' + tableId).find("[id='Checkout On']").addClass('highlight');
但是,我希望将“Checkout On”作为变量传递,例如:

var tableId = el.id;
var childEl = col.id;

$('#' + tableId).find("[id=" + childEl + "]").addClass('highlight');
然而,这似乎不起作用

更新:


完全理解ID不应该有空格,但这不是我能够解决的问题。

您在使用变量的版本中遗漏了引号:

$('#' + tableId).find("[id='" + childEl + "']").addClass('highlight');
// ------------------------^---------------^
但请注意,带有空格的
id
无效。发件人:

3.2.5.1
id
属性

id
属性指定其元素的唯一标识符(id)。[DOM]

该值在元素的主子树中的所有ID中必须是唯一的,并且必须至少包含一个字符该值不能包含任何空格字符。

(我的重点)


这意味着,即使它可以在一个浏览器上运行,也不能保证它可以在另一个浏览器上运行,甚至不能保证它可以在下一个版本中运行。(我打赌它会的,但没有理由去引诱这样的事情……

你不应该在任何id或类名中使用空格。使用snake_case或camelCase:
签出打开
签出打开
如果要选择ID为的元素,请使用
选择器。这样更好。像这样:

var tableId = el.id;
var childEl = col.id;

$('#' + tableId).find("#" + childEl ).addClass('highlight');

注意:ID不能有空格。查看更多信息。

您应该解决基本问题:在
id
属性中不能有空格,因此该值本身无效。属性选择器的问题是需要将值用引号括起来。为什么人们会对此投反对票?这是一个正确的答案。@ibrahimmahrir:这不是一个正确的答案。如果ID中有空格,则此操作将失败。(是的,ID中不应该有空格,但它有。)此外,没有解释。没有解释的答案不是有用的答案。为什么要使用
“[ID=”+ID+“]]”“
选择ID为的元素
“#”+id
更好。@ibrahimmahrir:当然,除了id选择器对以下id中可以包含的内容的规则更加严格(使得各种有效的id值都很难与id选择器一起使用),而且如果id中有空格,它根本不起作用。同样,如上所述使用(在
find
中)也没有明显的效果,仅当单独使用时(因为OP与
$('#'+tableId)
)。