jquery引用ID,名称中包含空格

时间:2015-04-16 15:10:34

标签: javascript jquery jquery-selectors jquery-multiselect

我正在使用带有jquery多选扩展名的jquery。

我的html语法:

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

然后我用:

获取多选的值
  $(function() {

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

这100%有效。

我的问题是当ID中有空格时如何使其工作。我知道在ID或Name中有一个空格是不理想的,但它是当前的空间,我需要从带有空格的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%'
            });
        });

这失败了,里面有空格。

我尝试过以下几个选项但没有成功。

任何建议总是受到赞赏。

$(function() {

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

5 个答案:

答案 0 :(得分:4)

喜欢这样

&#13;
&#13;
$("select[id='test two']").change(function() {
    console.log($(this).val());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple="multiple"  id="test two">
    <option value=1>1</option>
    <option value=2>2</option>
    <option value=3>3</option>
</select>
&#13;
&#13;
&#13;

可以(在ID中使用空格),但最好不要在空格中使用id,将_添加到选择器,例如'#text_two'

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

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

或者,您可以将ID更改为类...

答案 3 :(得分:2)

当您按id属性选择元素时,不要使用空格,因为空格字符对ID属性不起作用。为什么不遵循惯例?

  

ID令牌必须以字母([A-Za-z])开头,然后可以跟随   任意数量的字母,数字([0-9]),连字符(&#34; - &#34;),下划线   (&#34; _&#34;),冒号(&#34;:&#34;)和句号(&#34;。&#34;)。

如果您不关心任何类型的约定,请选择其他答案所表达的方式。

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

@courtesy 亚历山大

答案 4 :(得分:1)

jQuery文档在Selectors上有一个综合页面。您可以根据属性(id是)找到可用于查询的所有选择器,但它也有这条建议:

  

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

所以你有两个选择:

$('#test\\ two')

$('[id="test two"]')

所有这些都表示,HTML spec不允许元素id属性中的空格。浏览器可能仍会按照您的预期呈现页面,但如果可以避免,您真的不应该这样做;只是因为它使事情变得比他们需要的要复杂得多,正如你已经发现的那样。

  

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