在变量中存储最近和父项不在Internet Explorer中

时间:2011-12-19 01:46:49

标签: javascript jquery html internet-explorer firefox

所以我有

<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()但它仍然无法正常工作

3 个答案:

答案 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)

尝试使用varparents()

$('.clickthis').click(function(){
    var parent = $(this).parents('.the-table');
    alert(parent.html());
});

现场演示:http://jsfiddle.net/JhwcZ/

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