如何使用jQuery删除锚标记的父级

时间:2010-04-17 13:50:21

标签: jquery html

我要求删除锚标记的父元素。我动态地在其中添加div和锚点。下面是我的代码,请帮帮我

  $("<div>"+offer+"<a href='javascript:deleteOrder(this.parent)'>X</a></div>").appendTo($('#resultTable #resultRow td')[selectedOrder-1]);


function deleteOrder(obj)
        {
            $(obj).parent().remove();
        }

1 个答案:

答案 0 :(得分:6)

我会改变你的实现方式:

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对象。