如何访问函数jquery中的函数

时间:2013-05-26 16:58:07

标签: javascript jquery

我认为这个标题有点误导,但我不知道该怎么做。

我有一个功能,可以在点击链接时显示一个小弹出窗口(无论是否删除文章都是确认消息)。

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

2 个答案:

答案 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
});