jQuery .data()
似乎在IE10上被打破了。
以下代码适用于Chrome和FF,但会触发错误
在IE10中SCRIPT438:对象不支持属性或方法数据
。
知道为什么/如何让它在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;
在jsbin上查看:http://jsbin.com/hovuwequvu/edit?html,css,js,output
答案 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);
});
});