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代码)交互之前,需要解析DOM
注意,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元素,但未绑定到新的DOM元素。
你可以试试这个:
$.ajax({
type:"GET",
url:"../php/feed.php"
}).done(function(feedback){
$('#feed').html(feedback).click(function(e){
alert ('working')
)};
});
});