1

私はこれを正しい方法で質問したり行ったりしているのかどうかさえわかりませんが、それを示すだけの方がおそらく簡単です。基本的に、私はattrそれぞれのをスルーdivとして実行し、そのdivの属性に基づいて異なる結果を返すようにしようとしています。 parameterfunction

ご覧のとおり、この例は、コンテナdiv内のリンクをクリックしたときに表示されるドロップダウンのグループです。選択すると、それが親divのattrとして保存されます。クリックしてからコンテナに戻ると、問題が発生します...適切なデフォルトまたは選択が表示された状態で各ドロップダウンを再表示する代わりに、そのa隣の結果をミラーリングするだけです。

http://jsfiddle.net/nosfan1019/b7F6x/5/

TIA

4

2 に答える 2

2

console.log()さまざまなjQueryセレクターで何が起こっているかを確認するために、いくつかのステートメントを挿入しました。私は次のことを観察します:

  • 最初の「クリック」ノードをクリックすると、 _container「トップ1」になります
  • したがって、3つのdivの反復では、クラス「topone」のdivに含まれるクラス「dd」の両方のdivを選択します。
  • パラメータ_attr_parent関数に渡すパラメータselect()は、処理される各ノードで同じであり、両方の「dd」ボックスで同じ結果が得られます。

変更するノードを見つけるために使用するセレクターを変更したいと思います。

于 2012-08-02T00:58:33.703 に答える
1

foo = foo.find('.dropdown-toggle').html(_new + '<b class="caret"></b>');

この行を使用すると、2つのdivが得られるため、両方の値を変更します(値がドロップリストから選択された場合)。

選択した値を正しく復元するには:

function modified(_select) {
    console.log("modify");
    foo = $('#box').html();
    foo = $(_select).html(foo);
    // iterate on collection to restore selected value from selection tag;
    foo.filter("div[selection]").each(function(i, v){
        var selected = $(v).attr('selection');
        $(v).find('.dropdown-toggle').html(selected + '<b class="caret"></b>');                
    });                
}

次に、parentDivのいずれかに[selection]attrがあるかどうかを確認する必要があります。

if($(y).filter("div[selection]").length > 0){
    return modified(y);
}         

http://jsfiddle.net/b7F6x/50/

于 2012-08-02T02:48:51.240 に答える