jQuery / IE10 - SCRIPT438:对象不支持属性或方法'数据'

时间:2015-08-11 14:04:09

标签: javascript jquery internet-explorer

jQuery .data()似乎在IE10上被打破了。

以下代码适用于Chrome和FF,但会触发错误

  

SCRIPT438:对象不支持属性或方法数据

在IE10中

知道为什么/如何让它在IE10下工作?



$(document).ready(function() {
   $('body').on("click", ".clickme", function(){
       parent = $(this).parents(".container");
       html = $(parent.data('my-target')).html();
       $('#result').html(html);
   });           
});

#result {
    margin: 15px;
}

#second, #fourth {
    display: none;
}

.clickme {
    margin: 5px;
    padding: 10px;
}

<script src="https://code.jquery.com/jquery-2.1.4.js"></script><div class="container" data-my-target="#second">
    <div class="clickme" id="first">Click me</div>
    <div id="second">Hello World</div>
</div>
<div class="container" data-my-target="#fourth">
    <div class="clickme" id="third">Cliquez-moi</div>
    <div id="fourth">Bonjour !</div>
</div>
<div id="result">
    
</div>
    
&#13;
&#13;
&#13;

在jsbin上查看:http://jsbin.com/hovuwequvu/edit?html,css,js,output

1 个答案:

答案 0 :(得分:3)

parent是一个糟糕的(隐式全局)变量名。它与window.parent属性冲突:

$(document).ready(function() {
   $('body').on("click", ".clickme", function(){
       parent = $(this).parents(".container");
   //  ^^ You are attempting to write to the window.parent property here
       html = $(parent.data('my-target')).html();
       $('#result').html(html);
   });           
});

将其更改为更合适的名称,并将其声明为变量:

$(document).ready(function() {
   $('body').on("click", ".clickme", function(){
       var parentContainer = $(this).parents(".container");
       var html = $(parentContainer.data('my-target')).html();
       $('#result').html(html);
   });           
});