在 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 中等效吗?的主要内容,如果未能解决你的问题,请参考以下文章
Struts2 插件 - Dojo 或 jQuery 还是...?