2017-11-12 17 views
-2

ことで、クラスと実行機能を追加します.new-1にマッピングされて機能しないのはなぜjQueryの - それはここに私のhtmlコードである

$(".wrap a").on("click", function(){ 
    $(this).addClass("new-one"); 
    $(this).siblings("a").removeClass("new-one"); 
}); 
$(".new-one").on("click", function() { 
    console.log("I was hit!"); 
}); 

:私はこのjQueryのを作成している

<div class="wrap"> 
    <a href="#">Button</a> 
    <a href="#">Button</a> 
</div> 

作業?どうすれば修正できますか?

+1

あなたは '.new-one'にonclickをバインドしていますが、' HTML'はそのクラスの要素を含んでいません。 –

+0

@MuhammadOmerAslam、あなたはライトです – whoami

+0

クリックするとアンカー要素にクラスが追加されたと思います。htmlは大丈夫です@ライト –

答えて

2

delegateイベントハンドラが必要です。このようなもの。

$(".wrap").on("click", ".new-one", function() { 
    console.log("I was hit!"); 
}); 
0

上記の回答は、最終目標を達成するのに最適な方法です。期待どおりのコードが動作しない理由として、この例で は、コード:

$(".new-one").on("click", function() { 
    console.log("I was hit!"); 
}); 

は、スクリプトがロードされたときに、一度だけ実行してきています。このコードが実行されると、ページに ".new-class"という要素がないため、クリックイベントは付加されません。 コンテナ要素にclickイベントを入れ、.new-oneクラスの子にのみ委譲すれば正常に動作します。

関連する問題