的考虑的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