0

我对 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>");
});

但是,我个人认为,因为一旦页面加载它首先不存在,它不会将链接与点击功能联系起来。我该如何继续呢?

谢谢

4

5 回答 5

3

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

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

委托活动

委托事件的优点是它们可以处理来自以后添加到文档的后代元素的事件。通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需要,参考.

于 2013-08-21T12:56:19.953 回答
2
$("div.custom").on("click", "a", function(event){
   //alert('clicked');  
        createPDF('Y');
        return false;
});

有关详细信息,请参阅..根据jquery

于 2013-08-21T12:56:29.587 回答
1

你能试试这样的吗:

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

[编辑] 为时已晚 ;)

于 2013-08-21T12:58:19.700 回答
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');
    });
});
于 2013-08-21T12:59:50.217 回答
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;
    }); ;
});

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

希望它有所帮助

于 2013-08-21T13:01:22.980 回答