这里有一个简单的示例来说明行为:
给定以下 HTML 标记:
<div data-company="Microsoft"></div>
并且这段jQuery代码(使用jQuery 1.5.1):
// read the data
alert($("div").data("company"));
// returns Microsoft <<< OK!
// set the data
$("div").data("company","Apple");
alert($("div").data("company"));
// returns Apple <<< OK!
// attribute selector
alert($("div[data-company='Apple']").length);
// returns 0 <<< WHY???
// attribute selector again
alert($("div[data-company='Microsoft']").length);
// returns 1 <<< WHY???
// set the attribute directly
$("div").attr("data-company","Apple");
alert($("div[data-company='Apple']").length);
// now returns 1 <<< OK!
既然jQuery自动将HTML5 data-*导入到jQuery的data对象中,那么当数据发生变化时,属性也应该被更新,对吗?
"div[data-company='Apple'"
- 你忘记了加上]
来闭合。 - Šime Vidas