jquery $(this).parents('。cssClassName')只在IE中找到窗口,但在其他浏览器中有效

时间:2014-03-10 13:12:34

标签: javascript jquery html internet-explorer

我有以下jquery代码:

 jQuery(function ($) {
    $(document).on('click', '.del', function () {
        var self = $(this);
        parent = self.parents('.transportRow');
        parent.remove();
    });
});

当我点击带有“transportRow”类的div中带有“del”类的链接时,应该删除div。

这在Webkit和Firefox中运行良好,但在IE

中没有

我收到一条错误消息,告诉我该对象不支持属性或方法“remove”。

当我在调试器中检查它时,父似乎是窗口,而不是div元素。

有人知道如何让这个脚本在IE中运行吗?

1 个答案:

答案 0 :(得分:5)

当您使用parent而不使用var时,您将引用全局变量parent,即全局(parent)对象上的window属性。

在IE中,window.parent属性是只读的(实际上,属性的property attribute [[Writable]]设置为false或根本不设置。< / p>

更改行:

parent = self.parents('.transportRow');

var parent = self.parents('.transportRow');

应该做的伎俩。或者更改名称。

Crockford谈论此问题,建议使用that代替self。这个建议也适用于我所说的parent