1

私はこのようなフォームを持っています:

<form>
    <select name="user_id[]"></select>
    <select name="user_id[]"></select>
    <select name="user_id[]"></select>
    <select name="user_id[]"></select>
    <select name="tag_id[]"></select>
    <select name="tag_id[]"></select>
    <select name="stack_id[]"></select>
    <!-- ... etc. -->
</form>

最初の多値要素で構成される jQuery コレクションを名前で取得したい:

<form>
    <select name="user_id[]"></select>   <!-- this -->
    <select name="user_id[]"></select>
    <select name="user_id[]"></select>
    <select name="user_id[]"></select>
    <select name="tag_id[]"></select>    <!-- this -->
    <select name="tag_id[]"></select>    
    <select name="stack_id[]"></select>  <!-- this -->
    <!-- ... etc. -->
</form>

私は始めまし$('[name$="[]"]')たが、そこから立ち往生しています。簡単なセレクター メソッドはありますか、それともすべてを選択して必要なものをフィルター処理する必要がありますか?

4

1 に答える 1

2

この方法で要素を選択するための魔法の方法はないため、手作業が必要です。

まず、要素を名前でグループ化します。

var buckets = {}; // keys: "name" attribute values, values: arrays of elements
$('[name$="[]"]').each(function() {
    var name = this.name,
        bucket = buckets[name] || (buckets[name] = []);
    bucket.push(this);
});

次に、各バケットから最初の要素を選択して、jQuery オブジェクト内に配置できます。

// start with an empty jQuery object
var $firstOfEach = $([]);

// add to the above the first element inside each bucket
$.each(buckets, function() { $firstOfEach = $firstOfEach.add(this[0]); });

実際に見てください

于 2013-10-06T14:08:34.730 に答える