2009-03-04 68 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); 
相關問題