Разница здесь только в различных синтаксических сахарах или есть причина использовать один подход над другим?Все они работают, и, чтобы быть немного более запутанным, в чем разница между this и 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
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 и узел могут быть заменены на this и все еще работать.Я полагаю, что между 2 и 3 нет реальной разницы, но первый может действительно использовать другой подход.