的考慮的JavaScript/jQuery代碼:追加與事件處理程序的元件,以一組元素
jQuery("<input/>").attr("type", "button").attr("value", "Click me")
.click(function()
{
alert("hello");
})
.appendTo(".someDiv");
這就產生了一個按鈕,結合一個事件處理程序,並將其附加到與類別「的所有元素someDiv 」。
只有在文檔中只有一個類爲「someDiv」的元素時,才能按預期工作。如果還有更多,則顯示按鈕,但點擊事件不會被觸發。
我知道,我可以使用以下解決方法:
jQuery(".someDiv").each(function()
{
jQuery("<input/>").attr("type", "button").attr("value", "Click me")
.click(function()
{
alert("hello");
})
.appendTo(this);
});
其中一期工程,但可以說是那麼優雅。
我猜它是與在第一個例子中有隻創建一個元素,即相同的元素被添加到所有的「someDiv」 s左右,而在第二個例子中有產生實際多個元素,但我不明白爲什麼這將意味着事件處理程序在第一個示例中不起作用。
你使用的是什麼版本的jQuery?我嘗試了你的原始示例和我的1.3.2解決方案,他們都工作。 – Jataro 2009-08-25 22:53:04
我正在使用舊版本(1.1.4)。試用1.3.2版本,兩個版本都有效。結論:舊版本的錯誤。 (爲了兼容性原因我必須堅持......) – 2009-08-25 23:02:07