|
|
|
| Привет всем!
как сделать Return переменную из функций each?
$('.side a').each(function() {
$(this).on("click", function() {
var sside = $(this).attr('id');
});
});
//Мне нужна переменная sside тут
|
| |
|
|
|
|
|
|
|
для: makigo
(28.11.2013 в 11:40)
| | Во-первых зачем здесь .each(), и во-вторых кому вернуть? | |
|
|
|
|
|
|
|
для: confirm
(28.11.2013 в 11:52)
| | По моему чтобы не написать для каждой ссылки.
Вернуть sside. | |
|
|
|
|
|
|
|
для: 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;
});
|
Я понимаю значение слова "вернуть", я спрашиваю кому? | |
|
|
|
|
|
|
|
для: confirm
(28.11.2013 в 12:16)
| | Спасибо большое.
Так работает.
Только всеравно не могу получить sside снаружи функций.
написал так:
$('.side a').on("click", function() {
var sside = $(this).attr('id');
return sside;
});
// а тут у меня нету sside
|
| |
|
|
|
|
|
|
|
для: 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)
| | Даже обязательно sside==='' ? | |
|
|
|
|
|
|
|
для: confirm
(28.11.2013 в 14:44)
| | Эквивалентность попросил прописать парсер этого фидла. | |
|
|
|
|
|
|
|
для: Deed
(28.11.2013 в 14:47)
| | Чушь зачем пороть?
http://jsbin.com/owunOvOj/2/edit
Да объявлять, это не означает (а тем более не известно как надо) после загрузки страницы. И как всегда, простое превращаете в навороты. | |
|
|
|
|
|
|
|
для: makigo
(28.11.2013 в 12:40)
| | не используйте return. используйте замыкания:
var sside = '';
$('.side a').on("click", function() {
sside = $(this).attr('id');
});
// а тут sside будет:
alert (sside);
|
| |
|
|
|
|
|
|
|
для: Sfinks
(29.11.2013 в 00:01)
| | И где тут замыкание? | |
|
|
|
|
|
|
|
для: confirm
(29.11.2013 в 00:07)
| | там, где переменная объявлена выше функции.
P.S. я может и не по науке понимаю значение термина, но работает четко | |
|
|
|
|
|
|
|
для: Sfinks
(29.11.2013 в 00:32)
| | Объявление переменной к замыканию отношения не имеет. | |
|
|
|