2017-04-19 12 views
1

私はウェブプログラミングには新しく、現在はレスポンシブウェブサイトを構築しています。ウィンドウのサイズ変更イベントでは、右サイドバーはinsertBefore()およびappentTo()メソッドによって移動します。しかしその後、サイドバーのイベントハンドラはもう動作しません。ウィンドウ上の要素を移動した後でイベントハンドラが機能しない

単純なイベントハンドラメソッド:私は削除した場合にのみ

$('#sideBar').mouseover(function(){ 
    alert("hello"); 
}); 

作品:

function setlayout(){ 
    if($(window).width() <= 720){ 
    $('#sideBar').insertBefore('#footer'); 
    }else{ 
    $('#sideBar').remove().appendTo('#navbar'); 
    } 
}; 
$(window).on('resize load', function(){ setlayout() }); 

がどのように私は、イベントハンドラの仕事を作るのですか?

+0

DOMから削除した後、要素に要素を追加することができます。ありがとうございました! – Hulothe

答えて

0

サイドバーが除去されると、その後動的がページに追加、あなたはそれをこの方法を選択する必要があります:あなたがページから要素を削除するので、もし

$(document).on('mouseover', '#sideBar', function() { 
    alert('hello'); 
}); 

jQueryのは、負荷のイベントを添付し、それに接続されているすべてのイベントハンドラが削除されます。だからこそを代理人$(document)要素で呼び出すことによってイベントに参加させる必要があります。

作業JSFiddle example

+0

私は私の答えを編集しました。私は "side ** B ** ar"の大文字を忘れてしまい、JSFiddleの例を追加しました。 – Hulothe

0

試してみてください。

$('#sideBar').appendTo('#navbar').remove(); 
+0

それは彼がそれを行う方法はうまく動作します。 – Hulothe

0

ノードを削除する場合、このノードのハンドラは、あまりにも、削除します。 イベントを再バインドするか、単にイベントデリゲートを使用する必要があります。 @Hulotheの方法はイベントデリゲートです。

$(document).on('mouseover', '#sideBar', function() { 
    alert('hello'); 
}); 
関連する問題