2009-03-04 66 views
0

我使用jQuery动态生成锚标签。我已经添加了一个onclick属性,但是当我点击链接时,onclick不会触发。为什么用JQuery生成的定位标记不会触发onclick事件?

我生成的链接如下:

$(document).ready(function() { 

    var attributes = { 
     "id": "xxx", 
     "onclick": "alert('xxxx');", 
     "href": "https://localhost/widget/TabTest.aspx#" 
    }; 
    var link = $.create("a", attributes); 
    $(link).append("xxxx"); 
    $("#WidgetContainer").append(link); 
}); 
+0

值得注意的是$ .create不是jQuery本身的一部分。我以为我只是不熟悉它。 – 2009-03-04 18:19:42

回答

4

设置与jQuery的点击()函数中点击属性。你可能会在某些浏览器中工作,但不是其他人(我曾在FF中工作,但在IE中失败)。一般来说,如果jQuery有一个功能来做某件事,那么就使用它。


编辑: 为回应Adam Backstrom对这个问题的评论,我想我最好提供一个替代方案。当我在过去做到了这一点,我这样做是这样的:

$("#someplace").wrapInner("<a href='#'></a>"); 
$("#someplace a").click(function() { 
    alert("Hello"); 
}); 


编辑2: 从评论到这个帖子,如何做到这一点的一条线(并不总是最好的主意):

$("<a id='xxx' href='https://localhost/widget/TabTest.aspx#'>xxxx</a>") 
     .click(function() { alert("Hello"); }) 
     .appendTo($("#WidgetContainer")); 
+0

工作就像一个魅力!谢谢。 – 2009-03-04 19:37:58

1

如果您使用以上的jQuery 1.3,你可以使用“直播”事件绑定到click事件连接到任何一个<标签>添加到您的网页。例如:

$('a').live('click', function (evt) { 
    alert('Hello'); 
    evt.preventDefault(); 
}); 
var link = $.create('a', { 
    'id' : 'xxx', 
    'href' : 'http://localhost/' 
}); 
$('#container').append(link); 
相关问题