0

たくさんのオプションを持つ巨大な HTML 選択リストがあります。一部のオプションには、識別に使用している「親」属性があります。基本的に、誰かが親ドロップダウンを選択すると、そのすべての子が別のドロップダウンに入力されます。したがって、これらのオブジェクトをすべて配列に配置し、ページから削除して、必要なときに呼び出すようにしています。

これはすべて、私たちが作業しているサイトから取ってきた HTML コードなので、何とか自分たちで動作させることができます (方法はわかりません)。私の考えは、オブジェクトを作成し、アイテムをそのオブジェクトにプッシュすることでした(「id」と「parent」のキーを使用)。私がやっているようにはうまくいかないようです:

var location_array = new Object();

$('select[name="location"] option').each(function(){
    if($(this).attr('parent')){
        var obj = {
            id: $(this).attr('id')
            parent: $(this).attr('parent')
        }
        location_array.push(obj);           
    }
});

どんな助けでも大歓迎です。これはおそらくかなり基本的なことですが、私はこの種のコーディングをあまり頻繁に行いません。ご協力いただきありがとうございます!

4

2 に答える 2

3

変化する

var location_array = new Object();

var location_array = [];

オブジェクトにはメソッドがありません.push()

于 2013-08-23T07:37:18.933 に答える
0

pushを使用していますlocation_arrayが、配列ではなく、オブジェクトです。

私はおそらくそれをオブジェクトのままにします(名前を変更しました):

var parents = {}; // A better way to write `new Object()`

$('select[name="location"] option').each(function(){
  var parent = $(this).attr('parent');
  parents[this.id] = parent;
});

これで、要素 ID をその親にマッピングするマップができました。(これ$(this).attr("id")は本当に回りくどい書き方であることに注意してくださいthis.id。)


補足: カスタム属性を使用する場合はdata-*プレフィックスを付けて、HTML 定義の属性との競合を回避します (現在および将来)。

于 2013-08-23T07:38:46.957 に答える