在Internet Explorer中使用jQuery this.remove()-vs.- $('#id')。remove()(IE 9+)

时间:2014-06-18 02:26:28

标签: javascript jquery internet-explorer

为什么this.remove()在IE9 +中不起作用?

<input type="button" value="Next1" id="nextButton1">
<br>
<input type="button" value="Next2" id="nextButton2">

$('#nextButton1').on('click', function() {
   this.remove(); // works in all browsers but IE9+
});

$('#nextButton2').on('click', function() {
   $('#nextButton2').remove(); //works in all browsers
});

JSFiddle live version

3 个答案:

答案 0 :(得分:6)

这是因为您使用的是所有浏览器都不支持的ChildNode.remove()方法。

this ---> refers to a node. //WARNING: This is an experimental technology
然而,jQuery的.remove()方法是跨浏览器的,所以要使用它,你必须将this包裹在$(...)中,如下所示:

$(this).remove();

ChildNode.remove() Browser Compatibility

以下桌面浏览器支持

this.remove()

- Chrome 23+
- Firefox 23+
- Opera 10+
- Safari 7+

答案 1 :(得分:3)

在jQuery中包装this

$('#nextButton1').on('click', function() {
   $(this).remove();
});

答案 2 :(得分:0)

你问为什么,所以这就是原因:

在jQuery事件处理程序的上下文中,this引用jQuery为您当前正在处理事件的元素存储的DOM元素引用。因为您打算使用的.remove()函数是jQuery member function,而不是本机DOM浏览器函数,所以它不能按预期工作。

但是,如果您将DOM引用包含在$()jQuery()内,那么它将变为$(this)而不是this$或{{ 1}}函数将DOM引用作为参数并返回一个jQuery引用,然后该引用能够在其上调用jQuery成员函数。

您始终可以将DOM引用传递给jQuery并获取jQuery引用

E.g。

jQuery

http://jsfiddle.net/2h45Y/