在 jQuery 中的元素 this 的 Dojo 中等效吗?

Posted

技术标签:

【中文标题】在 jQuery 中的元素 this 的 Dojo 中等效吗?【英文标题】:Equivalent in Dojo of element this in jQuery? 【发布时间】:2015-05-21 17:33:31 【问题描述】:

在 jQuery 中但在 Dojo 中是否有类似 $(this) 的东西?

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

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+'');
    );
);

感谢和问候。

【问题讨论】:

解释您所面临的错误或问题。这样理解起来会更合适 g00glen00b 已经提供了答案,但是当你可以使用this.getAttribute('class')时,真的不需要使用jQuery或Dojo来获取属性。 【参考方案1】:

效果很好:

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);
);

【讨论】:

connect 已弃用,应使用 dojo/on 代替 @RayWadkins:是的,但它仍然存在于最新版本的文档中,并且由于许多 dojo 项目更新缓慢(因为 dojo 通常用于相当大的网络应用程序,或者至少是这样)是我使用它时的情况),我认为值得一提,因为我不知道 OP 使用什么。【参考方案2】:

是的,在 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/

【讨论】:

以上是关于在 jQuery 中的元素 this 的 Dojo 中等效吗?的主要内容,如果未能解决你的问题,请参考以下文章

dojo在foreach中获取当前节点的父节点

Dojo 相当于 jQuery $('html')

如何等待dojo元素存在?

Struts2 插件 - Dojo 或 jQuery 还是...?

等效于 Jquery/Backbone.js 中的 Dgrid/Store(Dojo 工具包)

在 Zend Framework 中按需启用对表单的 Dojo 支持