2015-01-15 44 views
0

我有這樣的代碼:jQuery的。對還是沒有。點擊工作,警報不出現

$("#top").on('click',function(){ 
     alert('I am here'); 
     $('html, body').animate({scrollTop:200}, 'slow'); 
     return false; 
}); 

,當我點擊按鈕(這是由jQuery的產生,但點擊代碼之前)

html += "<p><a href='javascript:;' id='top'>Back to Top</a></p>"; 

該警報未出現。我也試過這樣:

$("#top").click(function(){ 
      alert('I am here'); 
      $('html, body').animate({scrollTop:200}, 'slow'); 
      return false; 
    }); 

我已經試過這個代碼移入頁腳,但沒有做任何事情,這個代碼是包裹在$(document).ready(function(){

我不知道我做錯了。

回答

4

事件處理程序僅綁定到當前選定的元素;它們必須在代碼進行事件綁定調用時存在於頁面上。

當您動態創建元素時,您需要使用Event Delegation使用.on()委託事件方法。

$(document).on('event','selector',callback_function) 

$(document).on('click', "#top", function(){ 
    //Your code 
}); 

在地方的document你應該用最接近的靜態容器有更好的表現。

+0

那麼,即使已經有兩個upvotes,值得一提的是:_when當我點擊按鈕(這是由jquery生成,但在點擊代碼之前)_。對於我所理解的一切,就像在[這個小提琴](http://jsfiddle.net/bk9bLxbb/)中一樣,所以它應該在沒有事件授權的情況下工作。 – Regent 2015-01-15 17:57:56

+0

@Regent,我完全同意你的例子,如果那是OP的情況肯定會起作用的。 – Satpal 2015-01-15 18:03:03