我会改变你如何实现这一点:
var a = $("<a>").attr("href", "#").addClass("offer");
$("<div>").text(offer).append(a).appendTo("#resultTable");
有:
$(function() {
$("a.offer").live("click", function() {
$(this).closest("div").remove();
return false;
});
});
你使用jQuery,但你内联你的Javascript。这是非常“非jQuery”,而是鼓励unobtrusive Javascript。我已经使用live()
来处理将该事件处理程序绑定到动态创建的元素。这是(imho)一个更清洁的解决方案。
另外,您可以按照自己的方式创建标记,但可能会产生问题。例如,如果offer
包含<
?或者其他需要逃脱的东西?最好使用适合这项工作的功能,以避免所有逃跑(正如我所做的那样)。此外,肯定jQuery的1.4+甚至更早,$("<a>")
比满标记作为上述用途document.createElement()
而不是innerHTML
,这可能是在某些浏览器很慢,快多。
从jQuery 1.4 Released – Full Release Notes:
jQuery(“<div>”) jQuery(“<div/>”) and jQuery(“<div></div>”)
所有这三个现在使用相同的代码路径 (使用document.createElement
), 改善 jQuery("<div></div>")
性能。请注意,如果您指定了 属性,则我们使用 浏览器的本机解析(使用 innerHTML)。
最后,您可以将选择器传递给appendTo()
。不需要传递一个jQuery对象。
+1 HTML string-slinging不好,mm'kay? – bobince 2010-04-17 14:16:06