Просмотр полной версии : jQuery plugIn
Nightmare
17.09.2011, 20:42
Всегда интересовало такое:
(function($) {
$.fn.test = function(options) {
var options = $.extend({
def: 'def'
}, options);
var s = 'test';
};
})(jQuery);
можно ли вытянуть переменную 's'. Или как-то сделать что бы была "видна" ?
видна в какой области видимости?
Nightmare
18.09.2011, 12:04
$('body').test();
console.log(s); // и получаем 'test'
Видимо, делать нужно так:var s = $('body').test();
console.log(s);Очевидно, что для этого нужно, чтобы метод .test возвращал нужное значение.
Видимо, делать нужно так:
var s = $('body').test();
console.log(s);
Очевидно, что для этого нужно, чтобы метод .test возвращал нужное значение.
Нет, конечно. Плагин должен возвращать set of mached elements. Всегда. Если нужны какие-то данные то их всегда можно хранить в data. Или сделать getter типа
var s = $('body').test('options', 's');
Хотя интересный вопрос, как это лучше сделать. Так - мутно:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<span>Test</span>
<b>And</b>
<span>Hello</span>
<script>
$.fn.test = function(settings) {
var options = $.extend({
color: 'red'
}, settings);
if (typeof arguments[0] === 'string') {
return options[arguments[1]];
}
return this.each(function() {
$(this).css({color: options.color});
});
};
$('span').test({color: 'green'});
alert( $('span').test('options', 'color') );
</script>
Плагин должен возвращать set of mached elements. Всегда.
Честно, не в курсе хорошего тона в jQuery. Основной мой меседж в том, что не должны переменные появляться волшебным образом.
Честно, не в курсе хорошего тона в jQuery. Основной мой меседж в том, что не должны переменные появляться волшебным образом.Должен возвращать set of mached elements для того, чтобы можно было делать цепочки вызовов методов.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot