Я создаю плагин jQuery, который должен сделать кучу вещей при первом вызове (и только в первый раз). В первый раз, когда мне нужно построить индекс из части dom, я бы только хотел сделать это один раз и использовать этот индекс в остальное время.Как создать плагин jQuery с инициализацией в первый раз?
В идеале я хочу работать так:
- Первый раз это называется, установить запустить функцию Init() и настроить все много вар, который мне нужно в целом плагин (так что я могу 't определить их внутри init(), поскольку они будут недоступны в остальной части плагина).
- Все остальные времена, которые он называется, должны использовать уже определенные в первый раз варвары.
Сначала я попытался это:
$.fn.search = function() {
if(!inited) {
/*
Define everything that should only be defined the first time
*/
}
/*
All methods for my plugin, including an init() method
*/
if(!inited) {
init();
var inited = true;
}
};
Но я обнаружил, что каждый раз, когда плагин называется все вары ушли, так что не будет работать. Я знаю, что я могу хранить вещи, как так:
$.fn.search.config = {
inited = false,
output,
search,
singleElems,
templates,
included,
scoreBoard,
container,
singles
}
и определить их в Init(), но в том, что лучший способ для хранения вещей для вашего плагина?
это, спасибо! Обратите внимание, что 'this' внутри вашего закрытия уже является объектом jQuery, поэтому вы можете просто использовать' this' вместо '$ (this)' (правильно?) – askmike
Да, но помните, что это набор объектов с нулем, один или несколько элементов. Чтобы быть в безопасности, используйте 'return this.each (function() {...});' и поместите свой код внутри этой функции (в этом случае 'this' не будет объектом jQuery, а элементом, поэтому вам может потребоваться использовать '$ (this)') – mgibsonbr