0

我正在使用带有 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 或名称中有空格并不理想,但它是当前的,我需要从带有空格的 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%'
                });
            });
4

5 回答 5

5

像这样

$("select[id='test two']").change(function() {
    console.log($(this).val());
});
<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>

这是可能的(在 ID 中使用空格),但最好不要将 id 与空格一起使用,添加_到您的选择器中,例如'#text_two'

于 2015-04-16T15:12:51.917 回答
3

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

$("[id='test two']").change( ... );
于 2015-04-16T15:12:38.397 回答
2

您可以像这样使用属性选择器:

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

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

于 2015-04-16T15:17:57.123 回答
2

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

ID 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_")、冒号(":") 和句点 (".")。

如果您不关心任何约定,请像其他答案建议的那样选择。

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

@礼貌亚历山大

于 2015-04-16T15:21:27.980 回答
1

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

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

所以你有两个选择:

$('#test\\ two')

或者

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

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

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

于 2015-04-16T15:17:13.000 回答