javascript
  • jquery
  • 2012-04-29 7 views 2 likes 
    2

    私はjQueryの新入生です。 jQueryがコードで追加された要素を操作できるのは妥当だと思いますが、今はできないことがわかりました。jQueryは挿入された要素を操作できますか?

    $(function(){ 
        $("#addVideo").click(function(){ 
         $("#publisher").append("<div id='choseType'><input type='button' value='video'> <input value='music' type='button'> <input type='button' value='X'></div>"); 
        })  
        $("#choseType input:eq(0)").click(function(){ 
        $(this).addClass("selected"); 
        }) 
    }) 
    

    jqueryの制限または私のコードの不具合ですか?私が2番目のclick()関数を最初のものに入れれば正しく動作しますが、1回だけ実行されます(追加された#choseTypeを削除して2番目のクリックをもう一度追加しても機能しません)。コードを追加しましたか?ありがとう!

    答えて

    2
    $(function(){ 
        $("#addVideo").click(function(){ 
    
         //create new content, and append to publisher 
         //also, reference the new content 
         var newContent = $("<div><input type='button' value='video'> <input value='music' type='button'> <input type='button' value='X'></div>").appendTo('#publisher'); 
    
         //then add a handler to input in the context of the new content 
         $("input:eq(0)", newContent).click(function(){ 
          $(this).addClass("selected"); 
         }); 
        })  
    }) 
    
    +0

    ありがとう、それは今動作します。なぜ、2番目のクリックを最初の外側に置くことができないのか、2番目のクリック()は、追加されたコンテンツを参照せずに最初のものに追加するだけです。 – LotusH

    +0

    @Wasabi 2番目のハンドラが実行されたときには、すでにページにある要素にクリックハンドラが追加されていました。新しい要素にハンドラを追加しませんでした。新しい要素を追加すると、ハンドラはバインドされませんでした。 – Joseph

    4

    委任動的でない要素にイベント:

    $(document).on('click', "#choseType input:eq(0)", function(){ 
        $(this).addClass("selected"); 
    }); 
    

    とIDのはユニークです!

    +0

    +1。 on()関数を使用するには、jQuery 1.7以上が必要であることに注意してください。 –

    関連する問題