1

リストへのjqueryの追加に奇妙な問題があります。

<ul id="idNicheItems" class="clScrollItems ui-widget-content ui-corner-all">
    <li id="NicheItem_1"> Item 1</li>
    <li id="NicheItem_2"> Item 2</li>
    <li id="NicheItem_3"> Item 3</li>
    <li id="NicheItem_4"> Item 4</li>
</ul>

リストは、リスト ボックス タイプのコントロールの一部です。

 $("#idNicheItems li").hover(function(){
    $(this).addClass("clListHighlight");
      },function(){$(this).removeClass("clListHighlight");});

これはすべてうまくいきます。

後でjsonクエリを実行した後、リストに新しいアイテムを追加します。firebug を使用して検査すると、リスト内の他のすべてのアイテムと同じように見えます-ID は一意です-すべてが正常に見えます。

問題は、それを強調表示したり選択したりできないことです。

私の考えでは、上記を呼び出す必要があります"$("#idNicheItems li")。hover ..ノードを挿入した後にホバー機能を追加するためにもう一度-しかし、バグ修正にバグがない限り、それは機能しないようです。

私は正しい軌道に乗っていますか?

自分の質問に答えました - しかし、私の担当者はミミズのへそよりも低いです - しかし、それは他の誰かに役立つかもしれないので、削除しません.

バグ修正またはダーティ キャッシュにバグがあったようです - もちろん、投稿後 20 秒で修正されました....

とにかくその日のレッスン。jQuery append prepend などを使用して新しいアイテムを既存のリストまたはそれらに関連付けられた動作を持つアイテムのコレクションに挿入した後、新しいアイテムに動作を添付することを忘れないでください。

言い換えれば、新しいアイテムの元のアイテムで呼び出したセレクター コードを呼び出します。

4

2 に答える 2

1

live() を使用できます。これは、要素ではなく DOM ツリーのルート ノードにバインドされます。

$("#idNicheItems li").live('mouseover',function(){$(this).addClass("clListHighlight")});
$("#idNicheItems li").live('mouseout',function(){$(this).removeClass("clListHighlight")});
于 2013-05-19T09:19:21.393 に答える
0

この問題の理由は$("#idNicheItems li").hover(..)、mouseover および out ハンドラーを .hover() の呼び出し時に DOM ツリーに存在する要素にのみバインドすることです。

.on()次のように使用してこれを解決できます。

$("#idNicheItems")
    .on('mouseover', 'li', function() {
        $(this).addClass("clListHighlight");
    })
    .on('mouseout', 'li', function() {
        $(this).removeClass("clListHighlight");
    });
于 2013-05-19T08:49:36.790 に答える