我认为这个标题有点误导,但我不知道该怎么做。
我有一个功能,可以在点击链接时显示一个小弹出窗口(无论是否删除文章都是确认消息)。
我还有一个函数将数据发布到 php 文件,并将我得到的数据(也是文章列表)插回到div元素中。
当我尝试在我最初使用PHP生成的文章列表中使用该函数进行删除确认时,一切正常,但是当我尝试点击我插入到文章列表中的(基本上相同的)链接时使用 jquery 的div,该函数似乎不起作用(即不显示确认消息)。
我认为这是因为链接是在js文件加载后插入的,但有没有办法使这个函数成为全局函数,以便它也适用于我后来插入的东西?
$('.delete').click(function () {
var link = $(this).attr('href');
$('#dialog')
.attr('title', 'Do you want to delete this article?')
.text('If you click Delete, the entire article and all comments attached to it will be erased.')
.dialog({
buttons: {
'Delete': function() { window.location.href = link; },
'Cancel': function() { $(this).dialog('close'); }
},
closeOnEscape: true,
draggable: false,
resizable: false,
show: 'drop',
hide: 'drop',
modal: true
});
});
答案 0 :(得分:2)
您需要使用jQuery的.on()
方法(手册 - jquery.com)来监听事件。
原因是 - 一旦你开始添加需要响应事件的新元素动态,你需要有一种方法来通知你的事件监听器对它们做出反应。而.on()
就是这样做的。
一个简单的例子是:
$("div.parent_of_button").on("click", ".class-of-button", function(event){
$(this).text('clicked!');
});
这意味着您将在页面加载后添加的课程.class-of-button
的所有元素都会响应点击次数。
修改强>
有时,如果将.on()
附加到所有动态创建的元素的父级,则会有所帮助,然后您要定位的元素是.on()
方法的第二个属性,如示例所示。
答案 1 :(得分:0)
您可以在将事件附加到链接之前使用JQuery实时功能:http://api.jquery.com/live/
您可以在元素的共同ancester上监听click事件,并查看目标元素是否是您期望的链接:
commonAncestor.click(function(e){
if('A'==e.target.nodeName)
// do what you want to
});