这里的差异只是各种语法糖还是有理由使用一种方法而不是另一种方法?它们都有效,而且有点混淆这个和 evt.currentTarget 之间的区别是什么?
CSS
#reportDetails table tr:hover td,
#reportDetails table tr.hover td {
background: #aae4e2;
color: #333333;
}
示例html
<div id="reportDetails">
<table>
<tr>
<td> something</td>
<td> soemthing else</td>
</tr>
<tr>
<td> something2</td>
<td> soemthing else2</td>
</tr>
</table>
</div>
dojo.behavior脚本
dojo.require("dojo.behavior");
if (dojo.isIE <= 6) {
dojo.behavior.add({
'#reportDetails tr': {
onmouseover: function(evt){ dojo.addClass(evt.currentTarget, "hover");},
onmouseout: function(evt){dojo.removeClass(evt.currentTarget, "hover");
}
}
});
}
dojo.behavior.apply();
dojo.query forEach script
if (dojo.isIE <= 6) {
dojo.addOnLoad(function() {
dojo.query("tr", "reportDetails").forEach(function(node){
node.onmouseover=function(){dojo.addClass(node,"hover");}
node.onmouseout=function() {dojo.removeClass(node,"hover");}
}
});
});
}
dojo.query直接参与活动
if (dojo.isIE <= 6) {
dojo.addOnLoad(function(){
dojo.query("tr", "reportDetails")
.onmouseover(function(evt){dojo.addClass(evt.currentTarget, "hover");})
.onmouseout(function(evt){dojo.removeClass(evt.currentTarget, "hover");});
});
}
我假设 evt.currentTarget 和节点都可以用这个替换,并且仍然有用。我相信2和3之间没有真正的区别,但第一个可能实际上使用了不同的方法。
答案 0 :(得分:0)
简而言之:没有什么不同。它们都按预期进行。
使用最方便的方式。
this
指的是当前执行的函数的所有者。它与词汇语境不同。因此,您无法将node
和evt
替换为this
。