#jquery #jquery-plugins
#jquery #jquery-плагины
Вопрос:
Я ищу способ установить числовое значение по умолчанию для моих параметров по умолчанию моего плагина или иметь возможность получить значение по умолчанию с помощью вызова ajax. Другими словами:
var defaults = {
param1: 1000,
totalTime : null // the default value i'm looking for in seconds
}
Так что:
$('.test').myPlugin({
param1: 1000,
totalTime: function () {
$.ajax({
url: 'totaltime.php',
type: 'POST',
success: function(data) {
// retrieve value here
}
});
}
});
OR
$('.test').myPlugin({
param1: 1000,
totalTime: 200 // numerical
});
Я только недавно начал играть с плагинами и нашел это интересной концепцией, но у меня возникли небольшие проблемы с этим. Вот как выглядит мой плагин сейчас (базовая настройка для нового плагина).
(function($) {
$.fn.myPlugin = function(options) {
var plugin = this;
var defaults = {
param1: 1000,
totalTime : null
}
plugin.init = function() {
plugin.settings = $.extend({}, defaults, options);
plugin.timer();
}
plugin.settings = {}
plugin.timer = function() {
}
plugin.init();
return this;
};
})(jQuery);
Ответ №1:
просто определите свои значения по умолчанию следующим образом:
var defaults =$.extend( {
param1: 1000,
totalTime : null
},options);
и затем вы можете использовать его как defaults.param1
или defaults.totalTime
Обновить:
в приведенном выше примере показано, как вы можете установить значение totalTime численно по умолчанию.
если вы хотите изменить его во время работы плагина, вы можете сделать это:
defaults.totalTime=500;
или
defaults.totalTime=givenVal; //givenVal is a variable that contains the value
также в вашем коде jQuery вы можете установить общее время следующим образом:
$('#test').myPlugin({
totalTime:500
});
или
$('#test').myPlugin({
totalTime:givenVal
});
итак, теперь все, что вам нужно сделать, это получить значение из ajax, поместить его в переменную и передать его вашему плагину, как указано выше!
Комментарии:
1. Но как это позволяет мне использовать функцию ajax для получения желаемого значения, а не просто вводить простое значение для totalTime?
2. вы имеете в виду, что хотите получить значение totalTime из ajax, а затем использовать его для элемента? если да, то вызов ajax внутри вашего плагина или снаружи?
3. Я хочу получить значение totalTime через ajax и использовать его для вычисления чего-либо в моем плагине. Я хочу либо ввести значение численно, либо получить значение через ajax.
Ответ №2:
@AminJafari указал, как правильно определить ваши значения по умолчанию. Ниже показано, как вызвать ваш плагин со значением из запроса ajax. ПРИМЕЧАНИЕ: totalTime callback
должен возвращать значение, и значение должно быть доступно для возврата.— что означает, что это должно быть сделано в success
обратном вызове ajax-запроса:
$.ajax({
url: 'totaltime.php',
type: 'POST',
success: function(data) {
$('.test').myPlugin({
param1: 1000,
totalTime: function () {
// retrieve value here
return data.timeValue; //for example
}
});
}
});
Комментарии:
1. Итак, нет способа присвоить значение из ajax, не обернув весь мой плагин в $.ajax ?
2. Вы могли бы сделать свой запрос
synchronous
, но это означает, что вы взялиA
out ofAJAX
= SJAX . Просто обратите внимание, что синхронный запрос замораживает ваш браузер до завершения запроса.