为什么使用JQuery生成的锚标记不会触发其onclick事件?

时间:2009-03-04 18:02:09

标签: jquery

我使用jQuery动态生成锚标记。我已经为它添加了一个onclick属性,但当我点击链接时,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);
});

2 个答案:

答案 0 :(得分:4)

使用jQuery的click()函数设置click属性。

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

你所做的可能会在某些浏览器中运行,但不会在其他浏览器中运行(我在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"));

答案 1 :(得分:1)

如果您使用的是jQuery 1.3或更高版本,则可以使用“实时”事件绑定将点击事件附加到任何&lt; A&gt;您添加到网页的标记。 E.g:

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