多类查询不起作用

时间:2011-02-17 11:18:07

标签: javascript class dojo selector

我有这个HTML元素:

<div class="option default"></div>

...我试着在Dojo中找到它:

var el = dojo.query(".option.default");

但是当我尝试时:

alert(dojo.attr(el, "class"));

......我得到undefined

更新

出于某种原因,这有效:

alert(el.attr("class"));

为什么其他方法不起作用?

2 个答案:

答案 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];
}