相当于jQuery中元素的Dojo?

时间:2015-05-21 17:33:32

标签: jquery dojo

jQuery中有$(this)但是在Dojo中有什么东西吗?

我正在尝试做这样的事情:

dojo.ready(function(){
    dojo.query('a').onclick(function(){
        var inter_page = window.location.href;
        var inter_text = thiselementclicked.text();
        if ( inter_text === ""){
            inter_text = thiselementclicked.attr('class');
        }
        var inter_foward = thiselementclicked.href;
        ga('send', 'event', ''+inter_page+'', ''+inter_text+'', ''+inter_foward+'');
    });
});

谢谢和问候。

2 个答案:

答案 0 :(得分:0)

运作良好:

dojo.query("a").onclick(function (e) {
    console.log(this);
});

或者,如果您不想对列表采取行动:

var el = dojo.byId("myId"); // grab by id, or do another query
dojo.connect(node, "onclick", function () {
    console.log(this);
});

答案 1 :(得分:0)

是的,在Dojo中也是如此,只需使用query(this),你应该从当前项目获得NodeList,例如(在AMD中):

require(["dojo/query", "dojo/NodeList-manipulate", "dojo/domReady!"], function(query) {

    query("a").on("click", function(evt) {
        evt.preventDefault();
        console.log(query(this).text());
        query(this).attr('class').forEach(function(className) {
             console.log(className);   
        });
    });
});

请注意,.attr('class')本身会返回一个列表,因此要获取实际的类名,必须循环它。

演示:http://jsfiddle.net/g5m68776/