-2

我正在尝试使用命名空间,但不能让它工作。我尝试使用 mdd = {} 包装所有代码,并且尝试将所有代码都包装在$(document).ready(其中,var MDD = {}但均未成功。

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

<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>
4

2 回答 2

1

如果组织您的代码是您想要实现的目标,我会建议以下内容:

  • 在外部 创建命名空间$(document).ready(在我的示例中使用了Revealing 模块模式)。
  • $(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
  }
}();
于 2013-04-14T15:44:58.337 回答
0

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

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

$(document).on("ready.namespace", function() {
    ...
});
于 2013-04-14T14:28:37.953 回答