所以我有
<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(),第三个警报会提醒null ...
另一方面,在Firefox中,一切都正确地提醒html如何在IE中的变量中存储jquery对象,以便您可以执行上述操作?
我也尝试使用parents()而不是nearest()但它仍然无法正常工作
答案 0 :(得分:3)
将其更改为此并且适用于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可能正确地将其设为只读,因为它不是你应该能够改变的东西。< / p>
隐含全局变量(例如未声明的变量)的另一个原因是真正非常糟糕的做法。
答案 1 :(得分:1)
尝试使用var
和parents()
:
$('.clickthis').click(function(){
var parent = $(this).parents('.the-table');
alert(parent.html());
});
答案 2 :(得分:0)
这适用于IE 11
$("#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);
}
}
});