为什么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
});
答案 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