Я пытаюсь создать простой выпадающий список, который запускается при наведении курсора. Чтобы сэкономить на написании кода, я хочу воспользоваться селектором $ (this), но продолжаю сталкиваться с проблемой при попытке нацелить $ (this) на следующий элемент 'a'. Кто-нибудь знает правильный способ кодировать это, все еще используя селектор $ (это)?
В приведенном ниже коде, если я изменю $ (this) .next ('a') на $ ('. Base a'), код работает нормально, но тогда мне придется каждый раз писать один и тот же блок кода jQuery Я хочу использовать эту функцию, используя каждый раз другой селектор классов.
Код запроса:
var handlerIn = function() {
var t = setTimeout(function() {
$(this).next('a') <==== Problem is here
.addClass('active')
.next('div')
.animate({'height':'show'}, {duration:'slow', easing: 'easeOutBounce'});
}, 400);
$(this).data('timeout', t);
} ;
var handlerOut = function() {
clearTimeout($(this).data('timeout'));
$(this).next('a') <==== Problem is here
.removeClass('active')
.next('div')
.slideUp();
};
$('.base').hover(handlerIn, handlerOut);
HTML код:
<div id="info" class="base">
<a href="#" id="info-link" title=""></a>
<div id="expanded-info">
<!-- Stuff here -->
</div>
</div>
Так что я тоже безуспешно пытался ... любые идеи:
var handlerIn = function(elem) {
var t = setTimeout(function() {
$(elem).next('a')
.addClass('active')
.next('div')
.animate({'height':'show'}, {duration:'slow', easing: 'easeOutBounce'});
}, 400);
$(elem).data('timeout', t);
} ;
var handlerOut = function(elem) {
clearTimeout($(elem).data('timeout'));
$(elem).next('a')
.removeClass('active')
.next('div')
.slideUp();
};
$('.base').hover(handlerIn($(this)), handlerOut($(this)));