【发布时间】:2014-04-16 21:44:39
【问题描述】:
我今天有一个非常奇怪的问题。我正在使用 jQuery、Ajax 和 PHP 构建一个巨大的应用程序。
基本上,一旦页面加载,我会使用 PHP 加载 div 的内容。
<div id="samplediv">
<a href="#" id="click1">Test1</a>
<a href="#" id="click2">Test2</a>
<a href="#" id="click3">Test3</a>
</div>
当有人点击这些时,应该会出现一个警报,如下所示:
$("#click1").on("click", function(){
alert(1);
});
但是如果客户端点击
<a href="#" id="click_here">Click</a>
一个 jQuery 函数的触发方式如下:
$("#click_here").on("click", function(){
fillDiv();
});
fillDiv()函数基本上是调用和ajax函数并用结果填充div,PHP页面返回。
这与顶部 div 基本相同。 php 返回以下内容:
<a href="#" id="click1">Test1</a>
<a href="#" id="click2">Test2</a>
<a href="#" id="click3">Test3</a>
fillDiv() 函数将其放入samplediv。我检查了 2 结果的 HTML 是否完全相同!
问题:
当项目从 Ajax 函数加载回来时,使用完全相同的 html,如果我单击任何 Test1、Test2、Test3 链接,实际上我什么也没得到。没有警报,什么都没有。甚至没有错误消息。
可能是什么问题,我没有遇到?
【问题讨论】:
-
使用 jquery
live$('#id').live('click',function(){}); -
您要替换元素对吗?然后,除非您使用事件委托,否则他们将丢失所有分配的事件。
-
@NinjaDevelopers 不要活在过去。
.live在 1.7 中被弃用,在 1.9 中被移除。.on应该用于事件委托。 -
live() 在最新的 jQuery 版本中被贬低。我正在使用 点击
-
live自 jQuery 1.9 起已弃用。
标签: javascript php jquery html ajax