JQuery: передача переменных в функцию hover ()? - PullRequest
6 голосов
/ 26 ноября 2010

Могу ли я передать переменную в hover ()?

Как и в приведенном ниже сценарии, я не хочу объявлять одну и ту же переменную дважды var target = xxx и не хочу делать эту переменную глобальной target = xxx bcos У меня есть другая функция, использующая это имя переменной - target.

   $('.image-profile').hover(function () {

        var target = $('.button-change-image-profile',this);
        target.show();

    },function () {

        //var target = $('.button-change-image-profile',this);
        target.hide();

    });

Итак, я попытался передать переменную, как это },function (target) {, конечно, это неправильно, но есть ли другой способ передать эту переменную?

спасибо.

Ответы [ 4 ]

7 голосов
/ 21 апреля 2011

Другой возможный подход: сохранить данные в this при наведении / выводе с помощью jQuery .data().Вы сохраняете его при помощи мыши, вы извлекаете его при помощи мыши.Концептуально это может быть аналогично использованию глобальной переменной var или var out из hover, поэтому t может создать мусор ...

$('.image-profile').hover(function () {

  var target = $('.button-change-image-profile',this);
  target.show();

  // we save the target object into the 'target' key.
  $(this).data('target',target);  

},function () {

  // we retrieve the target object (a jQuery object) and then hide it.
  $(this).data('target').hide();

});

Надеюсь, этот подход не слишком неправильный ...

6 голосов
/ 26 ноября 2010

Короткая версия просто для переключения здесь:

$('.image-profile').hover(function () {
    $('.button-change-image-profile',this).toggle();
});

Чтобы он был доступен в каждом обработчике (как более общее решение), определите его снаружи при цикле (например, используя .each()), например:

$('.image-profile').each(function() {
    var target = $('.button-change-image-profile',this);
    $(this).hover(function () {
        target.show();
    },function () {
        target.hide();
    });
});
2 голосов
/ 26 ноября 2010

Я думаю, что jQuery bind может быть тем, что вы хотите.

1 голос
/ 26 ноября 2010

Просто определите var из функции наведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...