0

我想标题有点误导,但我不知道该怎么说。

我有一个功能,当单击链接时会出现一个小弹出窗口(是否删除文章的确认消息)。

我还有一个函数可以将数据发布到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
        });
});
4

2 回答 2

2

.on()您需要使用jQuery 的方法(手册 - jquery.com)来监听事件。

原因是 - 一旦您开始动态添加需要响应事件的新元素,您需要有一种方法来通知您的事件侦听器对它们做出反应。并.on()做到这一点。

一个简单的例子是:

$("div.parent_of_button").on("click", ".class-of-button", function(event){
    $(this).text('clicked!');
});

这意味着.class-of-button您将在页面加载后添加的所有类元素都会响应点击。

编辑

有时,如果.on()附加到所有动态创建的元素的父元素上会有所帮助,然后您要定位的元素是该.on()方法的第二个属性,如示例中所示。

于 2013-05-26T17:05:12.143 回答
0

您可以在将事件附加到链接之前使用 JQuery 实时功能:http: //api.jquery.com/live/

您还可以在元素的共同祖先上侦听 click 事件,并查看目标元素是否是您期望的链接:

commonAncestor.click(function(e){
if('A'==e.target.nodeName)
    // do what you want to
});
于 2013-05-26T17:04:53.590 回答