使用jquery插入一个锚来调用一个函数

时间:2013-08-21 12:54:04

标签: javascript jquery

我对jQuery相当新,我想要做的是一旦文档准备就绪,我正在创建一个字段。在一个div。目前它的工作原理如下:

$(document).ready(function() 
{
    $("div.custom").eq(1).html("<a href='javascript:createPDF(\'Y\')' class=shortButton'>Download PDF</a>");
});

现在这不起作用,因为参数。但我可以创造这样的东西

$("div.custom a").click(function(e) {  
    //alert('clicked');  
    createPDF('Y');
    return false;
}); 

为了改变这种情况,我将我的创作改为

$(document).ready(function() 
{
    $("div.custom").eq(1).html("<a href='#' class=shortButton'>Download PDF</a>");
});

但是,我个人认为,因为一旦加载页面它首先不存在,它不会将链接与点击功能连接。我该如何处理?

谢谢

5 个答案:

答案 0 :(得分:3)

您必须在动态创建的元素上使用on来绑定事件。您可以使用事件委派。

$("div.custom").on("click", "a", function(e) {  
    //alert('clicked');  
    createPDF('Y');
    return false;
}); 

委托活动

  

委派事件的优势在于它们可以处理来自的事件   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免频繁附加和删除事件处理程序reference

答案 1 :(得分:2)

$("div.custom").on("click", "a", function(event){
   //alert('clicked');  
        createPDF('Y');
        return false;
});

根据jquery

查看详细信息.. on

答案 2 :(得分:1)

你可以尝试这样的事情:

$("div.custom").on('click', 'a', function(e) {  
//alert('clicked');  
createPDF('Y');
return false;
});

[编辑]太晚了;)

答案 3 :(得分:1)

您可以在添加锚标记时挂钩事件,例如

$(document).ready(function () {
    $("div.custom").eq(1).html("<a href='#' class=shortButton'>Download PDF</a>").find('a').click(function (e) {
        e.preventDefault();
        createPDF('Y');
    });
});

答案 4 :(得分:1)

$(document).ready(function() 
{
    $("div.custom").eq(1).html("<a href='#' class=shortButton '>DownloadPDF</a>").find("a").click(function(e) {  
        alert('clicked');  
        createPDF('Y');
        return false;
    }); ;
});

你是对的,因为链接不存在。通过我给你的更正,在创建链接后添加了事件

希望有所帮助