2011-07-23 83 views
0

我想要一個具有onclick屬性的元素。當我使用jQuery時,它似乎不起作用。這裏是我的代碼:jQuery <input> onclick屬性的元素問題

$("h1").append($("<input>", {type: "text", onclick: "alert();"})); 

下面的代碼工作:

<input type="text" onclick="alert();"></input> 
+2

[作品在Chromium 12/Ubuntu的11.04(http://jsfiddle.net/davidThomas/k5t4j /);並且在Firefox 5中工作,如果alert()提醒*某事*](http://jsfiddle.net/davidThomas/k5t4j/1/)。 –

+0

關於這種調試,我總是指定'alert(「click」)',因爲我認爲它需要一個字符串:) – yitwail

+0

Hum。不適用於我的最新版本的Chrome! – Randomblue

回答

2

你真的希望onclick屬性,要使用jQuery的click事件。設置onclick屬性適用於大多數瀏覽器,但它不會利用jQuery的規範化事件和跨瀏覽器支持。

此外,您沒有正確使用jQuery工廠方法,它需要的第二個參數是選擇器的上下文,或者,在創建html的情況下,要創建的元素的所有者文檔你真的應該花一些時間閱讀api

可以在jQuery的鏈大部分的方法,這樣做的 「jQuery的方式」,你想要的是:

$('<input>').attr('type', 'text').click(function(){alert();}).appendTo('h1'); 
+0

非常有幫助!乾杯。 – Randomblue

+0

與我的 – rabudde

+0

@rabudde相同的解決方案,除了我解釋了爲什麼*,並且我使用不同的上下文來附加元素。 – zzzzBov

0

如何像:

 
$('h1').append('<input type="text">').find('input').live('click', function() { 
    alert('bam'); 
}); 

編輯:是的,我注意到,大衛·托馬斯的評論是正確的,只是改變警報實際輸出的東西很好。

+0

不適用於我,仍然! – Randomblue

3

爲什麼不:

$("h1").append($("<input>").attr("type","text").click(function(){alert()})); 
+0

啊哈,** **的作品! – Randomblue