2016-05-23 10 views
1

これらのバージョンのコードのいずれかが動作し、もう一方が失敗する理由を説明できる人はいますか?変数にjqueryオブジェクトを割り当てると、正常に動作しない

これは動作しません:

var classForSelectedElement = "hightlight"; 
var prevSelect = $(".form-element"); 
var $selectedElement = $("div").on("click", ".form-element",function(e){ 
    prevSelect.removeClass(classForSelectedElement); 
    $(this).addClass(classForSelectedElement); 
}); 

この作品のに対し:

var classForSelectedElement = "hightlight"; 
var $selectedElement = $("div").on("click", ".form-element",function(e){ 
    $(".form-element").removeClass(classForSelectedElement); 
    $(this).addClass(classForSelectedElement); 
}); 

はなぜ?

+0

なぜイベント委任を使用していますか?それが何であるかわからない場合、あなたはそれを学んでいる必要があります。あなたはそれが何であるかを知っていれば基本的にあなたの答えがあります。 –

+0

@bibangamba [This](http://stackoverflow.com/a/24053931/4790490)があなたの質問に答えるかもしれません。 – Hearty

答えて

2

あなたが前に、ページのロード時に.form-elementを取得しようとしているとして、最初の例では動作しません.form-element要素を動的にロードした後(による委任イベントハンドラの使用状況に)DOMに追加されていると仮定彼らは存在する。

+0

あなたはまったく正しいです(DOMが動的に追加されます)。何が起きているのか分からなかった。ありがとう! – bibangamba

+0

問題ないです。喜んで助けてください。 –

関連する問題