1

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

最初我将这些东西放在一个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);
4

2 回答 2

1

我的理解是 document.ready 在加载文档时触发一次,仅此而已。

不,这不是问题。如果你ready在事件发生后调用,它只会直接调用回调函数。

于 2013-02-18T13:49:39.210 回答
1

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

如果您的插件需要一次性初始化(而不是每次使用都需要初始化)并且您无法重构以摆脱该要求,那么您最好的选择是在插件中设置一个标志来指示您是否已完成初始化. 当用户触发您的插件(每次使用调用)时,检查标志,必要时进行一次性初始化并更新标志。然后执行每次使用初始化(无论您是否只进行了一次性初始化)。

于 2013-02-18T13:50:57.407 回答