передача переменных вне функций в jquery - PullRequest
0 голосов
/ 23 августа 2011

Мне было интересно, можно ли передавать переменные вне функции?

$('.selector').hover(function(){
var variable = $('.selector2', this).attr('id');
});

Мне нужно получить эту переменную, чтобы использовать ее вне этой функции наведения.Возможно ли это?

Спасибо!

РЕДАКТИРОВАТЬ ------------------------

Iпытаюсь щелкнуть что-то еще, получая эту переменную вне функции наведения

$('a.btn').click(function(){
alert(variable);
});

Ответы [ 3 ]

2 голосов
/ 23 августа 2011

Сначала вы захотите объявить эту переменную в более широкой области видимости:

var variable;

$('.selector').hover(function(){
    variable = $('.selector2', this).attr('id');
});
0 голосов
/ 23 августа 2011

Самый простой способ - создать нужную переменную перед обработчиком наведения.Вот ваш обновленный код:

var variable = '';
$('.selector').hover(function(){
    variable = $('.selector2', this).attr('id');
});
alert(variable);  // alerts empty string because you haven't hovered over '.selector' yet

Проблема заключается в том, что вы, вероятно, пытаетесь получить доступ к переменной, прежде чем ее установить, поскольку она устанавливается только при наведении

0 голосов
/ 23 августа 2011

Как в следующей строке кода после этого?У вас есть серьезное неправильное понимание того, как работает вся эта jQuery, если это так, мой друг.

Вы заявляете, что составляет функцию обратного вызова, фактически не выполняющую никакого кода.Определенная здесь функция будет вызываться в какой-то момент в будущем вне вашего контроля. *

Другая проблема, с которой вы здесь столкнулись, заключается в том, что у вас есть селектор, который может содержать несколько элементов dom, число от 0 до xих.

Если вам нужно получить список всех идентификаторов из селектора, который легко сделать, посмотрите на .each () или что-то подобное, просто знайте, что вы имеете дело с наборомни одного элемента управления, даже если вы выбираете только один элемент.

* Если вы сами не вызываете событие

...