Вход

Просмотр полной версии : jQuery plugIn


Nightmare
17.09.2011, 20:42
Всегда интересовало такое:

(function($) {
$.fn.test = function(options) {
var options = $.extend({
def: 'def'
}, options);
var s = 'test';
};
})(jQuery);


можно ли вытянуть переменную 's'. Или как-то сделать что бы была "видна" ?

bayrach
18.09.2011, 02:38
видна в какой области видимости?

Nightmare
18.09.2011, 12:04
$('body').test();
console.log(s); // и получаем 'test'

Sweet
18.09.2011, 12:50
Видимо, делать нужно так:var s = $('body').test();
console.log(s);Очевидно, что для этого нужно, чтобы метод .test возвращал нужное значение.

ваый
18.09.2011, 13:35
Видимо, делать нужно так:
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>

Sweet
18.09.2011, 13:55
Плагин должен возвращать set of mached elements. Всегда.
Честно, не в курсе хорошего тона в jQuery. Основной мой меседж в том, что не должны переменные появляться волшебным образом.

ваый
18.09.2011, 16:26
Честно, не в курсе хорошего тона в jQuery. Основной мой меседж в том, что не должны переменные появляться волшебным образом.Должен возвращать set of mached elements для того, чтобы можно было делать цепочки вызовов методов.