Javascript 名称中带有空格的jquery引用ID

Javascript 名称中带有空格的jquery引用ID,javascript,jquery,jquery-selectors,jquery-multiselect,Javascript,Jquery,Jquery Selectors,Jquery Multiselect,我将jquery与jquery multi-select扩展一起使用 对于我的html语法: <select multiple="multiple" id="test"> <option value=1>1</option> <option value=2>2</option> <option value=3>3</option> </select> 这100%有效 我的问题是,当ID中有一个空格

我将jquery与jquery multi-select扩展一起使用

对于我的html语法:

<select multiple="multiple"  id="test">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
</select>
这100%有效

我的问题是,当ID中有一个空格时,如何让它工作。我知道在ID或名称中使用空格并不理想,但它是当前的状态,我需要使用空格从ID中获取多个选择选项。 例如:

<select multiple="multiple"  id="test two">
    <option value=1>1</option>
    <option value=2>2</option>
    <option value=3>3</option>
    </select>

$(function() {

            $('#test two').change(function() {
                console.log($(this).val());
            }).multipleSelect({
                width: '100%'
            });
        });

在HTML4和HTML5中,空格在ID属性中不是有效字符。顺便说一下,您可以使用属性选择器:

$("[id='test two']").change( ... );
像这样

$select[id='test two'].changefunction{ console.log$this.val; }; 1. 2. 3.
jQuery文档有一个关于的综合页面。您将找到所有可用于根据id所属属性进行查询的选择器,但它也有以下建议:

要使用任何元字符,如!$%&'*+,./:@[\]^`{124;}~作为名称的文字部分,必须用两个反斜杠转义:\\。例如,id=foo.bar的元素可以使用选择器$foo\\.bar

所以你有两个选择:

$('#test\\ two')

综上所述,元素的id属性中不允许有空格。浏览器可能仍会像您预期的那样呈现页面,但如果可以避免,您确实不应该这样做;如果只是因为它让事情变得比需要的复杂得多,就像你发现的那样

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


可以使用如下属性选择器:

$("[id='test two']").change(function{
    // Logic here...
});

或者,您可以将id更改为类…

在按id属性选择元素时不要使用空格,因为空格字符对id属性无效。为什么不遵循约定

ID标记必须以字母[a-Za-z]开头,后面可以是 任意数量的字母、数字[0-9]、连字符、下划线 _、冒号:、和句点

如果你不在乎任何惯例,那么按照其他答案的建议选择

$("select[id='test two']").change(function() {
    console.log($(this).val());
});

@Alexander

您不应该在ID中有空格。请用连字符或下划线替换它们。在ID值中有空格是不合适的HTML。ID=test two是的!我从来没有见过ANKS,我知道这是不正确的,但如果您有任何建议,我们仍在寻找解决方案。可能重复感谢,我尝试过这一点,但它会导致jquery中断。错误:语法错误,无法识别的表达式:label[for=test two]可能您在其他地方有错误,正如您在这把小提琴中看到的:这种选择器工作得很顺利!是的,我想可能是jquery multi-select不喜欢这样,jquery本身也可以。。。我已使用您在中的方法成功引用了带有空格的ID。
$('[id="test two"]')
$("[id='test two']").change(function{
    // Logic here...
});
$("select[id='test two']").change(function() {
    console.log($(this).val());
});