1

私はあなたが次のようにjQueryでクリックイベントにバインドできることを知っています:

$('a').click(function(){});

しかし、動的に追加されるhtml要素についてはどうでしょうか。私がdiv次の内容で持っているとしましょう:

<div>
    <a href='location.html'>location</a>
</div>

今私は電話します:

$('a').click(
      function(){ 
          console.log("going to " + $(this).attr('href')); 
          return true;
      });

そして、それはうまくいくでしょう。しかし、私が電話する線のどこかにある場合

$('div').("<a href='location2.html'>location2</a>");

そのイベントハンドラーをそのイベントに明示的にバインドしなくても、イベントハンドラーはそれを取得します。

a新しい要素が追加されたときに再バインドすることは可能ですか?またはさらに良いことに、location.hrefプロパティが変更されるたびに、getパラメーターを毎回追加できるようになります。

たとえば、a要素のクリックイベントにバインドしている場合、イベントハンドラーは次のようになります。

function(){
    var newid = parseInt(Obj.Request('pageid'), 10) + 1;
    location.href = $(this).attr('href') + '?pageid=' + newid.toString();
    return false;
}

Obj.Requestがgetパラメータを返す関数であると仮定します。(私はすでにこれを持っています)。

4

5 に答える 5

4

このように使用します。

$(document).on( 'click', 'a', function() {
      console.log("going to " + $(this).attr('href')); 
      return true;
});

あなたのフィドルリンクに取り組んでいます。

于 2013-03-20T01:24:59.787 に答える
2

関数を使用したい.on

于 2013-03-20T01:20:52.907 に答える
2
$('a').on('click', function() {
    //works on non dynamic elements present at page load
});

$('#some_non_dynamic_parent_ID').on('click', 'a', function() {
    //works on dynamic elements added later
});
于 2013-03-20T01:24:48.817 に答える
1

を使用したい.on()が、委任方法として。

これを最も近い静的な親にバインドします。この例では、を使用しますbody

$('body').on('click', 'a', function(e){
  e.preventDefault();
});

これは、イベントが要素にバブルアップするまで待機し、イベントbodyの元のターゲットが何であったかを確認aします。要素である場合は、ハンドラーを起動します。

于 2013-03-20T01:24:35.123 に答える
1

1.7バージョン以降のjqueryを使用する場合は、.on()またはlive()関数を使用できます。これらの機能の違いについては、この記事で読むことができます

于 2013-03-20T01:25:49.843 に答える