2013-11-09 12 views
1

當我使用ajax從「echo」PHP獲得html代碼時,我需要繼續執行JS代碼,但它不起作用在所有的,當我用「回聲」 PHP當我從ajax獲得來自「echo」的html代碼時,我需要繼續使用JS代碼

發送JS代碼,例如,它僅適用:

我有一個,我用PHP

發送HTML代碼,我帶班「add_comment」發送按鈕

換句話說,當頁面被加載時,這個按鈕不存在,但是存在JS cod E:

  $('.add_comment').click(function(){ 
       console.log('good');  
      }) 

所以,當我只發送按鈕,這個代碼不工作,但是當我把我的按鈕,這個JS代碼,它工作得很好......

我的問題是:解決這沒有發送帶有HTML的JS代碼,因爲它確實不是很好的決定。

回答

1

元素的加入後的DOM準備是動態的,需要委託的事件處理程序:

$(document).on('click', '.add_comment', function(){ 
    console.log('good');  
}); 

取代document與動態元素

1

您需要使用委託最接近的非動態父。使用.ondocument選擇器。

$(document).on('click', '.add_comment', function(){ 
    console.log('good');  
}); 

從文檔:

委託事件有優勢,他們可以處理來自被添加到該文件在稍後的時間 後代元素的事件。通過 採摘這是保證出席 委派的事件處理程序連接時的元素,你可以使用委派事件 避免需要頻繁安裝和取下事件處理程序。這 元素可以在一個 模型 - 視圖 - 控制器設計視圖的容器元素,例如,或文檔如果事件 處理程序要監視文檔中的所有冒泡事件。該 文檔元素是文檔的頭部可用之前 裝載任何其他HTML,所以它是安全的,有重視事件,而 等待文件準備就緒。

1

如果我理解你的問題,你應該考慮做這樣的事情:

$("body").on("click", ".add_comment", function() { 
    // Your code here 
}); 

這將註冊在身上,這並在頁面加載存在的事件處理程序,用於監聽事件冒泡它與.add_comment的CSS選擇器匹配。

相關問題