2013-02-16 4 views
0

Я создаю новую функцию для панели навигации. Когда вы нажимаете на нее, он выпадает, но новый способ - когда они наводили указатель на стрелку (которая указывает вниз).SlideToggle() не работает корректно в случае события hover (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(); 
    }); 
}); 

ответ

-1

Одна работа вокруг в этой ситуации (не хороший один, но он работает, особенно при работе с более старыми версиями библиотеки 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(); 
    }); 
}); 
+0

Это не очень эффективное решение. – MacMac

+0

Проблема с кодированием профессионально находит эффективное решение в течение определенного промежутка времени.Если вы тратите больше времени, чем вы цитировали на работу, вы теряете деньги. Если вы не зарабатываете деньги на работе, вы не получаете прибыль и больше не сможете оплачивать счета. Итак, что касается эффективного решения, это решение, которое сортирует проблему. Получил лучшую идею? –

-1

дон 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 будет работать, немного buggier но ll work, cause it будет прыгать до конца анимации, что произойдет, если вы оставите, что ложь, является то, что если вы не t let the animation finish, it будет затем скользят к предыдущей точке, где это закончилось.

+1

Нет, идея не иметь скачок очереди до конца, но первый параметр очищает очередь. Это значит, что падение не исчезает. В более поздних версиях jQuery есть явное исправление, у него такая же ошибка до '1.6.4'. Это не отвечает на мой вопрос. –