Повторное использование виджетов jQuery - PullRequest
1 голос
/ 10 апреля 2010

Я ищу наиболее эффективный способ повторного использования виджетов с различными селекторами ... Например, если у меня есть:

$("#selector1").datepicker({
beforeShow: function(var1,var2) {
// do stuff
},
onClose: function(var1,var2) {
// do stuff
},
onSelect: function(var1,var2) {
// do stuff
}
})

И позже я хочу назначить этот же виджет с теми же функциями внутри другим селекторам, которые не известны во время загрузки. Так как это не о выборе лучшего селектора, и я хочу избежать:

$("#new-selector2").datepicker({
beforeShow: function(var1,var2) {
// do stuff
},
onClose: function(var1,var2) {
// do stuff
},
onSelect: function(var1,var2) {
// do stuff
}
})

$("#new-selector3").datepicker({
beforeShow: function(var1,var2) {
// do stuff
},
onClose: function(var1,var2) {
// do stuff
},
onSelect: function(var1,var2) {
// do stuff
}
})

Как лучше всего сделать что-то вроде:

var reusableDatepicker = datepicker({
beforeShow: function(var1,var2) {
// do stuff
},
onClose: function(var1,var2) {
// do stuff
},
onSelect: function(var1,var2) {
// do stuff
}
})

$("#selector1").attach(reusableDatepicker);
$("#new-selector2").attach(reusableDatepicker);
$("#new-selector3").attach(reusableDatepicker);

Я знаю, что это должно быть очевидно для всех разработчиков jQuery, поэтому я не могу найти его в документации :) Спасибо!

1 Ответ

2 голосов
/ 10 апреля 2010

Вы можете сделать именно то, что вы хотите, написав плагин. Однако здесь подойдет простая функция (фактически это стандартное решение для дублирования кода):

function setDatepicker(selector){
    $(selector).datepicker({/* ... */});
}

setDatepicker("#selector1");
setDatepicker("#new-selector2");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...