Dojo数据属性查找和Dojo等同于jQuery' s $(this)

时间:2014-09-10 18:25:50

标签: jquery dojo innerhtml custom-data-attribute

嘿所有我想从我的一个元素中获取价值。数据元素称为data-lang,以下是它的示例:

<p class="mainText" data-lang="es">Welcome</p>

这是我目前的Dojo javascript:

dojo.query("[data-lang]").forEach(
      function(item){
         var theText = dojo.attr(item, "innerHTML");
      }
);

这似乎不起作用,因为我没有得到任何东西。我希望从上面得到的是"es"

此外,Dojo如何处理jQuery等同于$(this)

1 个答案:

答案 0 :(得分:1)

上面的查询应该可以正常工作。你确定你在等待DOM准备好吗?如果您使用的是AMD,则应使用以下内容:

require([ "dojo/query", "dojo/domReady!" ], function(query) {
  // Code
});

或非AMD的以下内容:

dojo.addOnLoad(function() {
  // Code
});

关于你的第二个问题,别无选择。 dojo/query不会将当前节点作为回调函数的范围传递,就像您在forEach()中使用的那样。

但是,您通常可以将当前节点作为参数,因此您可以执行以下操作:

dojo.query("[data-lang]").forEach(function(item) {
  query(item).attr("innerHTML");
});

但请记住,如果您使用dojo/query模块,结果将是一个数组。

以下是一个完整的示例:http://jsfiddle.net/5nguxm8f/