Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как сделать Return переменную из each?
 
 автор: makigo   (28.11.2013 в 11:40)   письмо автору
 
 

Привет всем!

как сделать Return переменную из функций each?


$('.side a').each(function() {
$(this).on("click", function() {
var sside = $(this).attr('id');
});
});

//Мне нужна переменная sside тут

  Ответить  
 
 автор: confirm   (28.11.2013 в 11:52)   письмо автору
 
   для: makigo   (28.11.2013 в 11:40)
 

Во-первых зачем здесь .each(), и во-вторых кому вернуть?

  Ответить  
 
 автор: makigo   (28.11.2013 в 12:04)   письмо автору
 
   для: confirm   (28.11.2013 в 11:52)
 

По моему чтобы не написать для каждой ссылки.

Вернуть sside.

  Ответить  
 
 автор: confirm   (28.11.2013 в 12:16)   письмо автору
 
   для: makigo   (28.11.2013 в 12:04)
 

Чтобы поставить обработчик коллекции элементов нет надобности перебирать их в цикле, достаточно делегировать их обработку родителю. В jQuery можно либо делегировать обработку, либо просто указать элементы, которым прикрепляется обработчик, и без всякого цикла:
$('ЗДЕСЬ_ИМЯ_ТЕГА.side a').on("click", function() { 
    var sside = this.id; 
});

или так, если элементы динамически подгружаемые

$('body').on("click", 'ЗДЕСЬ_ИМЯ_ТЕГА.side a', function() { 
    var sside = this.id; 
}); 


Я понимаю значение слова "вернуть", я спрашиваю кому?

  Ответить  
 
 автор: makigo   (28.11.2013 в 12:40)   письмо автору
 
   для: confirm   (28.11.2013 в 12:16)
 

Спасибо большое.
Так работает.
Только всеравно не могу получить sside снаружи функций.

написал так:

$('.side a').on("click", function() {
var sside = $(this).attr('id');
return sside;
});

// а тут у меня нету sside

  Ответить  
 
 автор: confirm   (28.11.2013 в 13:12)   письмо автору
 
   для: makigo   (28.11.2013 в 12:40)
 

Еще раз повторяю:

писать $('.side a') можно, но лучше об этом забыть, и указывать всегда перед именем стиля и имя тега, к которому обращаетесь. Если, например, вы обращаетесь к параграфу со стилем side, значит надо писать $('p.side a').on(....

Обработчик события в jQuery возвращает DOM-объект, а это значит, что заставлять jQuery ковыряться в объектах DOM ради того, чтобы получить атрибут этого объекта, это и расточительно и глупо. Я не сразу это исправил, потом, но посмотрите выше - вот так надо:

var sside = this.id;

Что касается вернуть. var name = value, это не возврат значения, а установка переменной и ее значения. Если вам нужно обратиться потом к этой переменной из других функций, то устанавливайте ее как глобальную - не указывайте перед именем переменной ключевое слово var. Либо заранее вне обработчиков и функций просто объявите эту переменную:

var sside;

а в функциях и обработчиках можете обращаться к ней и изменять ее значение. Возврат значения, это все таки иное действие.

  Ответить  
 
 автор: Deed   (28.11.2013 в 14:32)   письмо автору
 
   для: makigo   (28.11.2013 в 12:40)
 

http://jsbin.com/UWOKAfe/1/edit?html,js,output

  Ответить  
 
 автор: confirm   (28.11.2013 в 14:44)   письмо автору
 
   для: Deed   (28.11.2013 в 14:32)
 

Даже обязательно sside==='' ?

  Ответить  
 
 автор: Deed   (28.11.2013 в 14:47)   письмо автору
 
   для: confirm   (28.11.2013 в 14:44)
 

Эквивалентность попросил прописать парсер этого фидла.

  Ответить  
 
 автор: confirm   (28.11.2013 в 15:13)   письмо автору
 
   для: Deed   (28.11.2013 в 14:47)
 

Чушь зачем пороть?

http://jsbin.com/owunOvOj/2/edit

Да объявлять, это не означает (а тем более не известно как надо) после загрузки страницы. И как всегда, простое превращаете в навороты.

  Ответить  
 
 автор: Sfinks   (29.11.2013 в 00:01)   письмо автору
 
   для: makigo   (28.11.2013 в 12:40)
 

не используйте return. используйте замыкания:
var sside = '';
$('.side a').on("click", function() { 
sside = $(this).attr('id'); 
}); 
// а тут sside будет:
alert (sside);

  Ответить  
 
 автор: confirm   (29.11.2013 в 00:07)   письмо автору
 
   для: Sfinks   (29.11.2013 в 00:01)
 

И где тут замыкание?

  Ответить  
 
 автор: Sfinks   (29.11.2013 в 00:32)   письмо автору
 
   для: confirm   (29.11.2013 в 00:07)
 

там, где переменная объявлена выше функции.

P.S. я может и не по науке понимаю значение термина, но работает четко

  Ответить  
 
 автор: confirm   (29.11.2013 в 07:51)   письмо автору
 
   для: Sfinks   (29.11.2013 в 00:32)
 

Объявление переменной к замыканию отношения не имеет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования