从列表中获取元素。道场

时间:2014-07-21 16:39:15

标签: javascript web dojo

我使用道场。

  dojo.ready(function ()
    var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class
    input.on("click", function(i) {
       console.log(input[i]);
       // function 
       });
    });

所以问题是:我得到了未定义的元素,所以我不能使用任何函数。我如何从列表中获取uniqe元素。 谢谢

3 个答案:

答案 0 :(得分:2)

EDIT1:
看看这里的jsfiddle http://jsfiddle.net/frank123/YYyH9

您可以在查询结果上使用foreach函数,如下所示

dojo.ready(function (){
    var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class
    input.forEach(function(node, index, arr){ // node is the elment
        console.log("Index"+index);
        dojo.on(node,"click", function() {
            console.log("Clicked!");
            // function 
        })
    });
});

答案 1 :(得分:1)

传递给on回调的参数是一个Event对象,而不是索引。尝试做

input.on("click", function(e) { //event object is conventionally named "e" or "evt"
    console.log(e);
});

IIRC,输入节点本身应该在e.target属性中可用。

https://dojotoolkit.org/reference-guide/1.10/dojo/on.html#id4

答案 2 :(得分:-1)

我使用frank提出的代码并使用dojo.connect代替dojo.on

dojo.ready(function (){
    var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class
    input.forEach(function(node, index, arr){ // node is the elment
        dojo.connect(node, "onclick", function() {
        console.log("Clicked!" + node);
        // function
            dojo.query(node).after("");
        });
    });
});

要在节点上使用任何函数,我使用dojo.query(node)。 谢谢。