簡體   English   中英

為什么用PHP動態生成的HTML無法響應JavaScript?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM