0

を使用している場合、この単純な jQuery は機能しませんon。使用する別の方法はありますonか?ではon動作しませんclass。私は使用していますjQuery JavaScript Library v1.8.3

live()古いコードを からに移動しようとしていon()ます。

$(".subUser").on("click",function() {
  alert("The paragraph was clicked.");
});

<div class="container">
    <div><i class="icon-add subUser"></i></div>
</div>
4

3 に答える 3

2

subUserクラスを持つ要素を動的に追加しない場合、コードは問題ないようです。おそらく document.ready に入れる必要があります

$(document).ready(function(){
  $(".subUser").on("click",function() {
     alert("The paragraph was clicked.");  
  });
});

要素を動的に追加する場合は、イベント委任が必要です。バインドコードが実行されるときに存在するセレクターで親要素を使用する必要があります。または、ドキュメントまたはボディを使用できます。

$(document).ready(function(){
  $(document).on("click", ".subUser", function() {
     alert("The paragraph was clicked.");  
  });
});

委任されたイベントには、後でドキュメントに追加される子孫要素からのイベントを処理できるという利点があります。委任されたイベント ハンドラーがアタッチされた時点で存在することが保証されている要素を選択することで、委任されたイベントを使用して、イベント ハンドラーを頻繁にアタッチおよび削除する必要をなくすことができます

于 2013-11-14T06:55:28.897 に答える
0

コードをどのように置き換えるかを確認してください

        // Bind
        $( "#members li a" ).on( "click", function( e ) {} );
        $( "#members li a" ).bind( "click", function( e ) {} );

        // Live
        $( document ).on( "click", "#members li a", function( e ) {} );
        $( "#members li a" ).live( "click", function( e ) {} );

        // Delegate
        $( "#members" ).on( "click", "li a", function( e ) {} );
        $( "#members" ).delegate( "li a", "click", function( e ) {} );

参照

http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html

于 2013-11-14T07:08:13.610 に答える
0

次に、これに変更できます。

$(".container").on("click", ".subUser" ,function() {

コードを から.live()に移動する.on()と、dom の変更前に利用可能だった静的な親にイベントを委任する必要があります。

したがって、あなたの場合.container、その時点でクラスが利用可能だったようです。その時点で委任する必要があります。$(document)ドキュメントは常にイベントを委任できるため、直接委任することができます( this might be little slower)。

于 2013-11-14T06:55:54.270 に答える