Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.07.2011, 21:26
Аспирант
Отправить личное сообщение для kichSman Посмотреть профиль Найти все сообщения от kichSman
 
Регистрация: 16.10.2009
Сообщений: 69

Как передать элемент в переменную из функции
Сразу извиняюсь за терминологию, просто с JQ недавно общаюсь.

Собственно, вопрос в следующем. Написан плагин, следующей конструкции:
(function( $ ){
	var fun = {
		create : function(){
			return this.each(function(){
				var $this = $(this);
				$this.wrap('<div title="dasd"></div>');
				var $box = $this.parent();//вот нужный элемент
				$box.append('<span>f</span>');		
				return $box;
			});
		},
	}

	$.fn.inputX = function(comm) {return fun[comm].apply(this, Array.prototype.slice.call( arguments, 1 ));}
})( jQuery );

Никак не могу при вызове плагина, передать в переменную элемент созданный плагином, см. листинг ниже
/*собственн ТУТ то и возникает вопрос, как переменной inX передать элемент плагина $box */
var inX = $('#law input').inputX('create');
/*чтобы потом можно было обращаться, например, так*/
inX.css('background', '#000')

Или это не возможно, просто с JS мало дружу?

Заранее благодарен.
Ответить с цитированием
  #2 (permalink)  
Старый 12.07.2011, 21:59
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Метод .each не модифицирует набор, так что возвращать $box бесполезно. Сделай по-другому.
Ответить с цитированием
  #3 (permalink)  
Старый 12.07.2011, 22:14
Аспирант
Отправить личное сообщение для kichSman Посмотреть профиль Найти все сообщения от kichSman
 
Регистрация: 16.10.2009
Сообщений: 69

Сообщение от Sweet Посмотреть сообщение
Метод .each не модифицирует набор, так что возвращать $box бесполезно. Сделай по-другому.
Огромное спасибо, действительно, чаще всего ошибки возникают из-за невнимательности чтения мануала, выходом явился способ вынесения переменной за функцию инициализации.
Ответить с цитированием
  #4 (permalink)  
Старый 12.07.2011, 22:16
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Вообще говоря, то, что ты хочешь сделать неправильно, потому что плагин должен возвращать набор matched elements, чтобы можно было делать цепочки вызовов. Поэтому писать плагин, который почему-то возвращает что-то еще - неверно концептуально.

Но в данном случае если сильно хочется, можно конечно извратиться. Скажем:
create : function() {
    this.each(function(){
        var $this = $(this);
        $this.wrap('<div title="dasd"></div>');
        var $box = $this.parent();//вот нужный элемент
        $box.append('<span>f</span>');
    });
    return this.parent();
}
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать локальную переменную глобальной?? Дмитрий Общие вопросы Javascript 8 02.11.2010 03:33
Как добавить элемент в XML через DOM используя PHP? bayah Серверные языки и технологии 6 11.08.2010 13:33
как передать переменную в функцию Virgile Общие вопросы Javascript 2 08.08.2010 22:50
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11