[英]Why doesn't HTML generated dynamically with PHP respond to JavaScript?
主體上的HTML可以工作,但是來自PHP的HTML根本不響應,為什么? 我該如何解決?
這就是我生成HTML的方式。
<?php
echo '<div id="TestClick">Click me</div>'
?>
和JavaScript。
$('#TestClick').click(function(e){
alert ('working')
});
但是作品。
<body>
<div id="TestClick">Click me</div>
</body>
好的,這是我如何使用ajax從PHP獲取HTML的方法。
$.ajax({
type:"GET",
url:"../php/feed.php"
}).done(function(feedback){
$('#feed').html(feedback)
});
如果您的JavaScript位於頁面的HEAD中,請確保您等待document.ready
事件綁定DOM事件。
$(document).ready(function() {
$('#TestClick').click(function(e){
alert ('working')
});
});
這是一般的最佳做法,因為在JavaScript與之交互之前,需要先解析DOM(HTML代碼)。
請注意,jQuery $(document).ready
有一個簡寫形式:
$(function() {
$('#TestClick').click // etc ...
});
如果要通過AJAX加載此元素,則需要在AJAX請求完成並將元素添加到DOM后處理事件。 另外,您可以使用事件冒泡將事件偵聽器委派到更高級別的DOM元素(例如document
)上。
$(document).on('click', '#TestClick', function() { /* your stuff */ });
最后但並非最不重要的一點,請確保您的DOM中沒有重復的ID
。 這也可能導致破裂。
可能是在單擊處理程序被調用之后創建了您的元素,並且由於該元素不存在,因此未附加處理程序。
嘗試在php代碼之后運行該javascript
編輯
嘗試
$.ajax({
type:"GET",
url:"../php/feed.php"
}).done(function(feedback){
$('#feed').html(feedback);
$('#TestClick').click(function(e){
alert ('working')
});
});
在頁面加載后使用AJAX加載內容時, .click()
事件已綁定到現有DOM元素,但未綁定到新元素。
您可以嘗試以下方法:
$.ajax({
type:"GET",
url:"../php/feed.php"
}).done(function(feedback){
$('#feed').html(feedback).click(function(e){
alert ('working')
)};
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.