为什么';用PHP动态生成的HTML是否响应JavaScript?
主体上的HTML是有效的,但是来自PHP的一个根本没有响应,为什么?我如何解决这个问题 下面是我如何生成HTML的为什么';用PHP动态生成的HTML是否响应JavaScript?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,主体上的HTML是有效的,但是来自PHP的一个根本没有响应,为什么?我如何解决这个问题 下面是我如何生成HTML的 <?php echo '<div id="TestClick">Click me</div>' ?> 但是,工作 <body> <div id="TestClick">Click me</div> 您的元素可能是在调用click处理程序之后创建的,因为它不在那里,所以没有附加处理程序 尝试在php代码之后运
<?php
echo '<div id="TestClick">Click me</div>'
?>
但是,工作
<body>
<div id="TestClick">Click me</div>
您的元素可能是在调用click处理程序之后创建的,因为它不在那里,所以没有附加处理程序 尝试在php代码之后运行javascript 编辑 试一试
您的元素可能是在调用click处理程序之后创建的,因为它不在那里,所以没有附加处理程序 尝试在php代码之后运行javascript 编辑 试一试
如果JavaScript位于页面的头部,请确保等待
document.ready
event绑定DOM事件
$(document).ready(function() {
$('#TestClick').click(function(e){
alert ('working')
});
});
这是一个通用的最佳实践,因为在JavaScript与DOM交互之前,需要解析DOM(HTML代码)
注意,jQuery$(document)有一个速记。ready
:
$(function() {
$('#TestClick').click // etc ...
});
如果您是通过AJAX加载此元素,那么一旦AJAX请求完成并将元素添加到DOM中,您就需要处理事件。此外,还可以使用事件冒泡将事件侦听器委托给更高级别的DOM元素(例如document
)
最后但并非最不重要的一点是,确保DOM中没有重复的
ID
。这也可能导致破坏。如果您的JavaScript位于页面的头部,请确保等待document.ready
事件绑定DOM事件
$(document).ready(function() {
$('#TestClick').click(function(e){
alert ('working')
});
});
这是一个通用的最佳实践,因为在JavaScript与DOM交互之前,需要解析DOM(HTML代码)
注意,jQuery$(document)有一个速记。ready
:
$(function() {
$('#TestClick').click // etc ...
});
如果您是通过AJAX加载此元素,那么一旦AJAX请求完成并将元素添加到DOM中,您就需要处理事件。此外,还可以使用事件冒泡将事件侦听器委托给更高级别的DOM元素(例如document
)
最后但并非最不重要的一点是,确保DOM中没有重复的
ID
。这也可能导致破坏。当您在加载页面后使用AJAX加载某些内容时,.click()
事件已绑定到现有的DOM元素,但未绑定到新的DOM元素。
你可以试试这个:
$.ajax({
type:"GET",
url:"../php/feed.php"
}).done(function(feedback){
$('#feed').html(feedback).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')
)};
});
});
这两种方法在浏览器中没有区别,因此,问题的根源在于生成页面的方式。你应该发布更多的代码,这是有区别的。纯HTML包含
元素,PHP版本与
相同。但是如果没有看到页面的其余部分被呈现出来,这很难说。这两种方法在浏览器中没有区别,因此产生问题的原因在于生成页面的方式。你应该发布更多的代码,这是有区别的。纯HTML包含
元素,PHP版本与
相同。但是,如果没有看到页面的其余部分呈现出来,那么在JavaScript之前就显示了hard(如果不是不可能的话)PHP。文件放在哪里无关紧要。我知道,我的意思是及时而不是及时place@DanielleZarcaro php可以在很多情况下运行Javascript代码cases@jraede与问题中一样,一旦发出ajax请求,就会呈现feed.php的php代码。在此之前,DOM中没有#TestClick元素,因为这个元素是在feed.php echo执行后创建的,所以首先Javascript代码将事件处理程序附加到一个不存在的元素,然后php代码创建该元素。第一个是Javascript,第二个是php.No…php在服务器上运行,并在任何响应到达客户端之前完成其执行。当绑定事件处理程序时,元素可能还没有加载,但这已经远远超过了PHP与之相关的程度。PHP显示在JavaScript之前。文件放在哪里无关紧要。我知道,我的意思是及时而不是及时place@DanielleZarcaro php可以在很多情况下运行Javascript代码cases@jraede与问题中一样,一旦发出ajax请求,就会呈现feed.php的php代码。在此之前,DOM中没有#TestClick元素,因为这个元素是在feed.php echo执行后创建的,所以首先Javascript代码将事件处理程序附加到一个不存在的元素,然后php代码创建该元素。第一个是Javascript,第二个是php.No…php在服务器上运行,并在任何响应到达客户端之前完成其执行。当事件处理程序绑定时,元素可能还没有加载,但这已经远远超过了PHP与之相关的程度。my js是从头部的外部脚本加载的,并且有$(document).ready:in place。我认为这不会解决问题,因为元素是在文档通过ajax准备好之后创建的。请尝试在
标记之前加载脚本,然后尝试$(“#TestClick”)。在('click',函数(e){…
@Eustatia添加了关于ajax和事件委派的额外说明。这就是技巧“$(文档).on('click'、'#TestClick',function(){/*your stuff*/});,感谢Simon.my js是从头部的外部脚本加载的,并且有$(document).ready:in place。我认为这不会解决问题,因为元素是在文档通过ajax准备好之后创建的。请尝试在
标记之前加载脚本,然后尝试$(“#TestClick”)。在('click',函数(e){…
@Eustatia添加了关于ajax和事件委派的额外说明。这就是技巧“$(文档).on('click','TestClick',function(){/*您的东西*/});,谢谢Simon。
$(document).on('click', '#TestClick', function() { /* your stuff */ });
$.ajax({
type:"GET",
url:"../php/feed.php"
}).done(function(feedback){
$('#feed').html(feedback).click(function(e){
alert ('working')
)};
});
});