【发布时间】:2014-01-24 21:13:02
【问题描述】:
最近我工作的应用程序从 jQuery 1.7.1 升级到 1.10.2,包括 Migrate 1.2.1。
升级后,我们注意到 jQuery 为扩展方法 data 返回了不同的结果,具体取决于选择器是否有任何结果。无论选择器结果如何,attr 扩展方法始终返回 undefined。
使用以下 HTML 文档,我对 1.7.1、1.8.3、1.9.1 和 1.10.2 版本进行了测试。
<html>
<head></head>
<body>
<div id="results">trying to access .data member off a selector that returns no results</div>
<script type="text/javascript" src="jQuery.js"></script>
<script type="text/javascript">
$(function(){
var target = $("#results");
target.append("<div>jQuery " + $.fn.jquery + " => " + $("p").data("blah") + "</div>");
target.append("<div>jQuery " + $.fn.jquery + " => " + $("p").attr("data-blah") + "</div>");
target.append("<div>jQuery " + $.fn.jquery + " => " + $("body").data("blah") + "</div>");
target.append("<div>jQuery " + $.fn.jquery + " => " + $("body").attr("data-blah") + "</div>");
});
</script>
</body>
在 1.7.1 和 1.8.3 中,所有结果都是 undefined。
在 1.9.1 和 1.10.2 中,空选择器的结果是 .data("blah") 从 undefined 切换到 null。
我查看了 1.9.0 升级文档以及 1.10.0 发行说明,但没有发现任何有关这些更改的迹象。有人知道为什么是这样吗?是故意的吗?
我已经包含了一个小提琴来展示各种版本的 jQuery 是如何处理这个问题的。
【问题讨论】:
-
很抱歉你是对的。我包含了错误版本的小提琴。马上更新。
标签: javascript jquery