2013-02-18 83 views
1

我正在编写一个插件,它将创建一些DIV并在插件初始化时将样式应用于它们。在下面的示例代码中,我正在对某些元素应用.disableSelection()document.ready()在jQuery插件初始化?

最初我在document.ready包装中包含了这些东西,但后来发现这不是理想的解决方案,因为在文档加载完成后,有人可以很好地调用插件。我的理解是,document.ready在文档加载时触发一次,就是这样。

如果是这种情况,我可以使用什么来代替document.ready在插件初始化上应用样式等?

$.examplepluginname = { 
id: 'examplepluginname' 
,version: '1.0' 
,copyright: 'Copyright (c) 2013 Example Name' 
,uri: 'http://www.example.com/' 
,licensed: { 
    MIT: 'http://www.opensource.org/licenses/mit-license.php' 
    ,GPL: 'http://www.gnu.org/licenses/gpl.html' 
} 
/*,plugin: function(prepare,sort){ 
    aPluginPrepare.push(prepare); // function(settings){doStuff();} 
    aPluginSort.push(sort);   // function(valuesAreNumeric,sA,sB,iReturn){doStuff();return iReturn;} 
}*/ 
,defaults: { // default settings 
    searchDefaultText: 'Search & hit ENTER to add to list' //Text to show when user is not entering a search term 
} 
}; 

(function($) { 
//Attach this new method to jQuery 
$.fn.extend({ 
    //pass the options variable to the function 
    examplepluginname: function(options) { 

     var userSettings = $.extend($.examplepluginname.defaults, options) 
      //Switcher for when the user presses enter before search results come back 
      ,selectOnlyResult = false 
      //Arrow key navigation setting 
      ,displayBoxIndex = -1 
     ; 

     /* 
      RUN INITIALIZATION SETTINGS 
     */ 
     $("#availableItems").disableSelection(); 
     displayAvailableItems(); 
     //Set the display styles  
     $('#tagSearch').css({ 
      'width': '100%', 
      'border-radius': '5px', 
      'outline': '0 none', 
      'padding': '2px 3px', 
      'font-style': 'italic' 
     }); 

     return this.each(function() { 
}); 
     } 
    }); 
})(jQuery); 
+0

我有点困惑。如果这是你写的插件,你应该将这些样式作为插件初始化的一部分应用到元素上...... – 2013-02-18 13:48:44

+0

@AnthonyGrist你是什么意思?例如,我打算为某人调用'$('#examplepluginnamecontainer')。examplepluginname();'让插件生成插件运行所需的div和样式 - 就像jQueryUI一样。只需要用户制作一个容器,并让插件生成内部。 – 2013-02-18 13:52:22

+1

对,所以你根本不需要'$(document).ready()'这样的事件。就你所关心的事情而言,它与事件无关。你可以在他们所调用的函数内执行所有**。 – 2013-02-18 13:53:22

回答

1

如果是这种情况,我可以使用什么来代替document.ready来在插件初始化上应用样式等?

如果你的插件需要一次性初始化(而不是需要进行初始化每使用),你可以不重构摆脱这一要求,那么最好的办法是有一个标志插件表明你是否已经完成初始化。当用户触发你的插件(每次使用调用)时,检查标志,必要时进行一次初始化并更新标志。然后执行每次使用的init(不管你是否做过一次性init)。

1

我的理解是,火灾的document.ready当 文件被加载一次,仅此而已。

不,这不是问题。如果您在事件发生后致电ready,它将直接调用回调函数。