我有这个HTML元素:
<div class="option default"></div>
...我试着在Dojo中找到它:
var el = dojo.query(".option.default");
但是当我尝试时:
alert(dojo.attr(el, "class"));
......我得到undefined
。
更新
出于某种原因,这有效:
alert(el.attr("class"));
为什么其他方法不起作用?
答案 0 :(得分:3)
dojo.query()返回基于CSS选择器的DOM节点列表,而不是单个元素。 你需要这样做:
var els = dojo.query(".option.default");
var el = els[0];
alert(dojo.attr(el, "class"));
以下是一个有效的例子:http://jsfiddle.net/ArtBIT/L35k6/
答案 1 :(得分:1)
会添加评论,但我不能。
@Orolin,Dojo如何知道您知道您希望返回一个节点。如果它是特殊的单个元素,那么你在任何地方调用dojo.query()并且真的不知道你期望有多少元素可以回来,你必须自己测试。这将是可怕的,并且需要超过三个字符!
如果您真的想要此功能,请执行以下操作之一:
dojo.queryFirst = function() {
return(dojo.query(arguments)[0]);
}
或者,如果你必须
dojo._oldQuery = dojo.query;
dojo.query = function() {
var nodes = dojo._oldQuery(arguments);
return nodes.length > 1 ? nodes : nodes[0];
}