2013-08-20 74 views
1

即時通訊新的JavaScript模塊模式,不能得到像這樣的工作,我錯過了什麼? $ .bind不會給出任何錯誤,並且dropBox不是NULL。

var Application = (function(d, w, $) { 

    var drop, dragStart, dragEnter, dragOver, dragLeave; 

    drop = function(e) { 
    }; 

    dragStart = function(e) { 
    }; 

    dragEnter = function(e) { 
    }; 

    dragOver = function(e) { 
    }; 

    dragLeave = function(e) { 
    }; 

    return { 

     init: function() { 

      var dropBox = $('#someid'); 
      dropBox.bind('dragstart', dragStart); 
      dropBox.bind('dragenter', dragEnter); 
      dropBox.bind('dragover', dragOver); 
      dropBox.bind('drop', drop); 
      dropBox.bind('dragleave', dragLeave); 
     } 
    }; 

})(document, window, window.jQuery); 
+2

你調用了'Application.init()'嗎? – alex

+0

是使用(function(){}()); – user1655758

+0

與jquery'dropBox'不會爲空,如果它不處於dom就緒狀態,它可能爲空。 –

回答

0

隨着(function(...) {})(...);你只調用聲明函數與init()成員返回一個對象。只要你不叫init()成員函數,什麼都不會發生。

你應該調用文檔ready事件Application.init()

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

如果太早調用它,$('#someid')將是空的。

除此之外,您的問題中的代碼沒有任何問題。看到這個jsFiddle

+0

是的,我可以向你保證Application.init()被調用。 – user1655758

+0

@ user1655758是否在dom就緒狀態下調用? –

+0

「是使用(function(){}());」,我在實際代碼中獲得了大量的console.log,並且init被執行 – user1655758