【问题标题】:js - how to namespace this code? [closed]js - 如何命名此代码? [关闭]
【发布时间】:2013-04-06 16:14:32
【问题描述】:

我正在尝试使用命名空间,但无法正常工作。 我尝试使用 mdd = {} 包装所有代码,并尝试使用 var MDD = {} 包装 $(document).ready( 中的所有内容,但均未成功。

如何为这段代码添加命名空间?

<script type="text/javascript">
  $(document).ready( function() {
    $("#categories").sortable({
      revert: true,
      receive: function(evt, ui) {
        ui.item.remove();
        if ( $('#list_to_process li').length == 0) {
          $('#list_to_process').remove();
        }
      }
    });
    $("li.to_process").draggable( {
      connectToSortable: "#categories",
      helper: "clone",
      revert: "invalid"
    });
  });
</script>

【问题讨论】:

  • 你想在命名空间中添加什么?我没有看到导出的方法或属性,只有 2 个函数调用 ...

标签: javascript jquery namespaces


【解决方案1】:

如果组织你的代码是你想要达到的目标,我建议如下:

  • 外部创建您的命名空间$(document).ready(在我的示例中使用Revealing module pattern)。
  • $(document).ready 上调用您的代码。

示例:

$(function(){
    MDD.init();
});

var MDD = function () {
  var init = function () {
    $("#categories").sortable({
      revert: true,
      receive: function(evt, ui) {
        ui.item.remove();
        if ( $('#list_to_process li').length == 0) {
          $('#list_to_process').remove();
        }
      }
    });
    $("li.to_process").draggable( {
      connectToSortable: "#categories",
      helper: "clone",
      revert: "invalid"
    });
  };
  return {
    init : init
  }
}();

【讨论】:

    【解决方案2】:

    JQuery 的 .sortable.draggable 调用是方法,而不是事件处理程序。据我所知,它们不能被命名空间。

    然而,jQuery 的$(document).ready(... 一个事件处理程序,因此您可以命名它,但前提是它与.on 方法一起使用。请注意,我之前没有对此进行过测试,但如果可行,那么以下应该可以工作:

    $(document).on("ready.namespace", function() {
        ...
    });
    

    【讨论】:

    • 为什么有人需要命名文档就绪事件是另一回事。
    • @Juhana - 我不知道,我真的不在乎。这是 OP 中的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2017-01-25
    • 2014-03-21
    • 1970-01-01
    相关资源
    最近更新 更多