0

UL の LI の下にあるすべてのアンカーへのバインディングを作成しています。(仕事で1.6 jQueryバージョンを使用しているため、デリゲートを使用しています)。とにかく、何らかの理由でテキストアンカーを削除します。その後、後で再度適用します。

つまり、アンカータグをデリゲートにバインドし、何らかの条件のためにアンカータグを削除する方法はありますか? アンカーを (ラップ経由で) 再適用してから、そのバインディングを元に戻しますか?

明確にするために、「デリゲート」を使用していますが、アンカータグをアンラップすると、再度ラップしてもバインディングが失われます。あら。

jQuery(pc).delegate("li > a",'click', function(){
    showit(jQuery(this).closest('li').index());
    pc.find("li:not(:has(a))").wrap('<a href="#">'); <-- this is when I add it lateron
    jQuery(this).replaceWith(jQuery(this).text()); <-- this is when I remove it.
});

編集:::おそらく、これは将来誰かを助けるかもしれません。DELEGATE は意図したとおりに機能します。私のコードを確認すると、li 内のテキストではなく、 "LI" をラップしていることがわかります。そのため、イベントはバインドを保持しませんでした。LI のテキストをアンカー、ビンゴでラップすると、うまくいきました。人の時間をずらして申し訳ありません。したがって、この場合の解決策は「wrap」ではなく「wrapInner」です。

4

2 に答える 2

1

このようなことですか?

   if(new Date().getTime() % 2 == 0) 
     {
        $("body").on('click','ul>li a', doWork);
     }
     else
    {
        $("body").off('click');
    }

     //...
     //...
     // later , ReBind the event ...    


function doWork()
{
        alert('mod2');
}

jsbin

于 2013-03-24T07:10:32.240 に答える
1

詳細については、jQuery の「デリゲート」エリアを参照してくださいon: http://api.jquery.com/on/

ドキュメントにバインドを適用すると、アンカーの追加と削除を処理する必要があります。

jQuery(document).on('click', 'ul li a', function(event){
  // Check event here
  // Do something here
});
于 2013-03-24T07:11:11.217 に答える