所以我有
<table class="the-table">
<tr>
<td>
<a class="clickthis">YO!</a>
</td>
</tr>
</table>
然后
$('.clickthis').click(function(){
alert($(this).closest('.the-table').html());
parent = $(this).closest('.the-table');
alert(parent.html());
alert($(parent).html());
});
但是在internet explorer中,第一个警报将正确地警告表,第二个警报将返回html()不支持的错误,第三个警报将警告空…
另一方面,在Firefox中,所有内容都会正确地提醒html如何将jquery对象存储在IE的变量中,这样你就可以做上面的事情了?
我也试过使用parents()而不是nearest(),但它仍然不起作用
将其更改为这个,它可以在IE上工作:
$('.clickthis').click(function(){
alert($(this).closest('.the-table').html());
var parent = $(this).closest('.the-table');
alert(parent.html());
alert($(parent).html());
});
显然,IE与一个名为parent
的全局变量有某种冲突。当你将该变量设置为局部变量时,它就会起作用。
正如mu is too short
指出的,这可能是与window.parent
的冲突,IE9可能正确地使其成为只读,因为它不是你应该能够改变的东西。
这是为什么隐式全局变量(例如未声明的变量)是一个非常非常糟糕的做法的另一个原因。
尝试使用var
和parents()
:
$('.clickthis').click(function(){
var parent = $(this).parents('.the-table');
alert(parent.html());
});
现场演示:http://jsfiddle.net/JhwcZ/
可以在ie11下运行
$("#grid").kendoGrid({
change: function(e) {
var selected = this.select();
selectedDataItems = [];
for (var i = 0; i < selected.length; i++) {
var dataItem = this.dataItem($(selected[i]).closest("tr"));
selectedDataItems.push(dataItem);
}
}
});