【问题标题】:dojo show() and hide() porting from jquery()dojo show() 和 hide() 从 jquery() 移植
【发布时间】:2013-02-25 19:39:18
【问题描述】:

我只是将一堆代码从 jQuery 移植到 DOJO (1.8)。我偶然发现了显示/隐藏 DOM 元素(可能是图层或其他任何东西)。

假设我们有一个想要显示或隐藏的图层,没有动画。想象一个 Buttonbar 在某些事件上发生变化,我不一定想一直引入图形效果。

<div id="myLayer">hide me</div>

在 jQuery 中我会这样做:

$("#myLayer").show();  // to show
$("#myLayer").hide();  // to hide

我觉得非常漂亮和苗条。现在移植到DOJO我发现我需要做以下事情:

require(["dojo/fx/Toggler"], function(Toggler) {
    // Create a new Toggler with default options
    var toggler = new Toggler({
      node: "myLayer",
      hideDuration: 0,
      showDuration: 0
    });

    // Hide the node
    toggler.hide();

    // Show the node
    toggler.show();
  });

这是 8 行代码而不是 2 行代码。我错过了什么吗?有没有更快的方法来做一个简单的隐藏?

非常感谢, 托比

【问题讨论】:

  • 请看这个question,但是在你进一步使用dojo之前,如果你的目标是一些dom操作,那么它不是去的地方(他们不会创建它,如果它是同样的东西) 请阅读更多关于何时为您的项目选择道场的信息,这只是一个小提示 :)
  • 我在我的应用程序中做了很多基于 AJAX 的 WebUI 工作。我发现在一个(jsp)视图中组合不同的功能非常方便,而不必为简单的任务切换页面(在 MVC 模式中还有控制器和后面的东西)。因此,我相信手头有一个可靠的 JavaScript 框架是一种很好的做法。作为副作用,DOM 操作当然也随之而来。我发现在 jQuery 中这很容易,但我在 dojo 中遇到了麻烦……也许我的一般方法有问题。

标签: javascript jquery dojo


【解决方案1】:
require(["dojo/query", "dojo/NodeList-dom", "dojo/domReady!"], function(query){
  query("#myLayer").style("display", "none");
});

【讨论】:

  • 克雷格,感谢您的意见。还没弄清楚为什么,但是 query("#myLayer") 或 query("mylayer") 都为我返回 null ... grml
  • 你会用 .style("display", "inline") 或 .style("display", "block") 来做 show() 吗?
  • 默认使用应该是块。仅当元素最初使用 inline 显示时,jquery 方法才会使用 inline。
  • .style("display", "") 应该可以同时显示内联、块和其他元素。
猜你喜欢
  • 2011-12-17
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多