2016-03-07 153 views
0

我想更全面地理解Javascript如何處理事件。 click()會觸發一個div彈出,但一旦div被關閉,它不會再次響應該事件。 什麼是保持這個事件循環的好方法?Jquery事件監聽器基本理解

$project.click(function() { 
     $popup = $(".popup"); 
      $np.hide(); 
    $popup.append($html); 

    // EXIT THE POPUP 
     $(document).bind('keydown',function(e) { 
     if (e.which == 27) { 
      $popup.hide(); 
      $np.show("slow"); 
     } 
    }); 
     $(".exitbutton").click(function() { 
      $popup.hide(); 
      $np.show("slow"); 
    }); 
}); 
+0

添加爲event處理你能包括問題'html'? 'js'似乎在每個'click'處添加一個'keydown'事件? – guest271314

+0

所以問題是當按鈕被點擊並且沒有更多次時div只彈出一次? – chackerian

回答

0

如果.popup元素在頁面加載設置爲display:none,可以嘗試在$projectclick處理程序使用.toggle()。還定義$popup,移動​​事件click處理程序之外,其中出現在click的每個$project

var $popup = $(".popup"); 
$project.click(function() { 
    $np.toggle(); 
    $popup.append($html).toggle(); 
}); 

// EXIT THE POPUP 
$(document).bind("keydown",function(e) { 
    if (e.which == 27) { 
     $popup.hide(); 
     $np.show("slow"); 
    } 
}); 

$(".exitbutton").click(function() { 
    $popup.hide(); 
    $np.show("slow"); 
}); 
+0

啊是的$彈出定義應該在處理程序中。所以這些功能是不斷「聽」這些事件? –

+0

@KyleDewhurst你可以在問題中包含'html'嗎? – guest271314