2013-10-04 134 views
4

我創建簡單的提示選項的jQuery插件。我這樣做看下面是我的代碼。但它不起作用。 下面的代碼是單獨的js文件。創建jQuery插件

(function($) { 
     $.fn.gettingmessage = function() { 

      var element = this; 

      $(element).load(function() { 

       alertingcontent(); 

       function preventnextpage() { 
        return false; 
       } 

       function alertingcontent() { 
        alert("nicely done"); 
      }); 
     }; 

    })(jQuery); 

我這樣

 $(function(){ 
    $("body").gettingmessage(); 
}); 

我不知道如何解決這個任何建議將是巨大的稱這個功能 。 JSFIDDLE

感謝

+1

* 「'變種元素=此;'」 *在插件中,'this'不是元素。這是jQuery * set *,它可能有零個或多個元素。在上面顯示的代碼中,它並不重要;如果你做了任何不平凡的事情,它會。 –

+0

*「但它不起作用」*「不起作用」不是一個有用的問題描述。不起作用*如何*?你期望發生什麼?會發生什麼呢?你在控制檯看到什麼錯誤? (或者,如果沒有,這是有用的信息。) –

+0

第一個問題是,你忘了關'alertingcontent'函數體。使用螢火蟲/開發人員工具來捕捉簡單的語法錯誤。 – Tibos

回答

5
  • 首先,你缺少一個右括號。
  • 其次,load()功能不會做,你要搜索的內容,使用ready()代替。

更新代碼:

(function($) { 
    $.fn.gettingmessage = function() { 

     var element = this; 

     $(element).ready(function() { 

      alertingcontent(); 

      function preventnextpage() { 
       return false; 
      } 

      function alertingcontent() { 
       alert("nicely done"); 
      } 
     }); 
    }; 

})(jQuery); 

$(function(){ 
    $("body").gettingmessage(); 
}); 

Updated jsFiddle

+1

AFAIK,'ready()'只綁定到'document'來檢查DOM何時準備就緒。這裏的'load'事件沒有什麼不妥(這也考慮到了圖像,'ready'沒有)。 – Johan

+0

我猜問題是'load()'綁定到'body',它已經在執行javascript時加載了。 – zessx

+0

這取決於'body'中的所有資源是否都已加載。考慮'$(窗口).load' VS'$(文件).ready' – Johan