0

jquery multi select 拡張機能で 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

1

jQuery のドキュメントには、 Selectorsに関する包括的なページがあります。属性に基づいてクエリを実行するために使用できるすべてのセレクターを見つけることができますが、id次のアドバイスもあります。

メタ文字 ( など!"#$%&'()*+,./:;<=>?@[\]^`{|}~) を名前のリテラル部分として使用するには、2 つのバックスラッシュでエスケープする必要があります: \\. たとえば、 を持つ要素id="foo.bar"はセレクターを使用できます$("#foo\\.bar")

したがって、次の 2 つのオプションがあります。

$('#test\\ two')

また

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

とはいえ、HTML 仕様idでは、要素の属性にスペースを使用することはできません。ブラウザーはおそらく期待どおりにページをレンダリングしますが、それを避けることができるのであれば、実際にはそうすべきではありません。あなたが知っているように、それが必要以上に物事を複雑にするという理由だけで。

値は、要素のホーム サブツリー内のすべての ID の中で一意である必要があり、少なくとも 1 文字が含まれている必要があります。値に空白文字を含めることはできません。

于 2015-04-16T15:17:13.000 に答える