Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';用PHP动态生成的HTML是否响应JavaScript?_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

为什么';用PHP动态生成的HTML是否响应JavaScript?

为什么';用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代码之后运

主体上的HTML是有效的,但是来自PHP的一个根本没有响应,为什么?我如何解决这个问题

下面是我如何生成HTML的

<?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')
       )};
    });
});