Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.09.2011, 20:42
Кандидат Javascript-наук
Отправить личное сообщение для Nightmare Посмотреть профиль Найти все сообщения от Nightmare
 
Регистрация: 16.04.2010
Сообщений: 133

jQuery plugIn
Всегда интересовало такое:
(function($) {
  $.fn.test  = function(options) {
    var options = $.extend({
     def: 'def'
    }, options);
    var s = 'test';
  };
})(jQuery);


можно ли вытянуть переменную 's'. Или как-то сделать что бы была "видна" ?
Ответить с цитированием
  #2 (permalink)  
Старый 18.09.2011, 02:38
Аспирант
Отправить личное сообщение для bayrach Посмотреть профиль Найти все сообщения от bayrach
 
Регистрация: 16.01.2011
Сообщений: 71

видна в какой области видимости?
Ответить с цитированием
  #3 (permalink)  
Старый 18.09.2011, 12:04
Кандидат Javascript-наук
Отправить личное сообщение для Nightmare Посмотреть профиль Найти все сообщения от Nightmare
 
Регистрация: 16.04.2010
Сообщений: 133

$('body').test();
console.log(s); // и получаем 'test'
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2011, 12:50
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Видимо, делать нужно так:
var s = $('body').test();
console.log(s);
Очевидно, что для этого нужно, чтобы метод .test возвращал нужное значение.
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2011, 13:35
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Сообщение от Sweet
Видимо, делать нужно так:
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>

Последний раз редактировалось ваый, 18.09.2011 в 13:48.
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2011, 13:55
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от ваый
Плагин должен возвращать set of mached elements. Всегда.
Честно, не в курсе хорошего тона в jQuery. Основной мой меседж в том, что не должны переменные появляться волшебным образом.
Ответить с цитированием
  #7 (permalink)  
Старый 18.09.2011, 16:26
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery Cycle Plugin - position: absolute; brabuz jQuery 1 26.08.2011 15:56
jQuery plugin failed lpfan jQuery 1 22.04.2011 16:11
jQuery Form Plugin - file upload IgorN jQuery 3 22.02.2011 15:17
Как подружить jQuery Form Plugin и Zforms? vlaabra AJAX и COMET 0 02.02.2010 19:48
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55