SlideToggle() не работает правильно при событии наведения мыши (jQuery 1.4.1)
Я создаю новую функцию для панели навигации. Раньше он падал, когда вы нажимаете на него, но новый способ - когда они наводят курсор на стрелку (которая указывает вниз).
Проблема, с которой я столкнулся, - это сценарий, который я написал для этого, прекрасно работает в новой версии jQuery, но не работает корректно в версии этого сайта.
Смотрите пример с последней версией jQuery: http://jsfiddle.net/titanium/wDEjs/
Пожалуйста, посмотрите пример с версией 1.4.1: http://jsfiddle.net/titanium/SmhHM/
Нет ничего плохого в самом скрипте (для более нового), но его нужно изменить, чтобы он работал в версии 1.4.1, чтобы обойти ошибку / ошибку в этой версии. Даже если кто-то знает, что это за ошибка / ошибка и может указать мне правильное направление, чтобы обойти это, это было бы здорово.
Я понимаю, что лучшее, что можно сделать, это использовать более новую версию jQuery, но я попробовал это, и кажется, что это испортило несколько вещей на сайте (и это очень большой сайт).
Вот код, который я использую в данный момент (который отлично работает в последней версии jQuery):
HTML
<ul>
<li>Page <span>sub</span></li>
<li>Page <span>sub</span></li>
<li>Page <span>sub</span></li>
<div class="clear"></div>
</ul>
<div class="sub">
<p>Some stuff here for the menu</p>
</div>
CSS
ul {
margin:0;
padding:0;
}
li {
float:left;
padding:0 50px;
background-color:#eee;
}
span {
cursor:pointer;
}
.clear {
clear:both;
}
.sub {
width:400px;
height:300px;
display:none;
background-color:#ccc;
}
Javascript
$(document).ready(function() {
$("span, .sub").hover(function() {
$(".sub").stop(true, false).slideToggle();
});
});
2 ответа
Один способ обойти эту ситуацию (не очень хороший, но он работает, особенно когда речь идет о старых версиях библиотеки jQuery):
<script src="/js/jquery-1.4.1.min.js"></script>
<script src="/js/jquery-1.9.1.min.js"></script>
<script>
var jQuery_1_9_1 = $.noConflict(true);
</script>
Когда вы вызываете свою функцию jQuery, а не используете глобальную переменную $
используйте переменную, которую вы создали. В этом случае это будет jQuery_1_9_1
,
Конечным результатом будет это изменение в скрипте:
$(document).ready(function() {
$("span, .sub").hover(function() {
jQuery_1_9_1(".sub").stop(true, false).slideToggle();
});
});
Донt know really why its working like that, but it does work with jquery 1.4.1 and if you change the second parameter of the stop, to true, it
сработает, немного пугает, но этоll work, cause it
я перейду к концу анимации, что произойдет, если вы оставите это в false, еслиt let the animation finish, it
Затем я перейду к предыдущей точке, где это закончилось.