W bibliotece, z której korzystam, mam zadanie przesunięcia elementu na początek strony, gdy jest on przewracany. (Zwiększam jego rozmiar, więc muszę go zobaczyć, a następnie zmniejszam, gdy mysz się wyłączy).Przeniesienie aktywnego elementu traci wydarzenie mouseout w przeglądarce Internet Explorer
Biblioteka, której używam, ma schludne rozwiązanie, które używa appendChildren na aktywnym elemencie, aby przenieść go do końca, tak aby jego rodzic był dalej pod koniec domingu i z kolei na wierzchu.
Problem polega na tym, że uważam, że element, który się porusza, jest tym, nad którym unosi się nad wydarzeniem mouseout. Twoja mysz nadal znajduje się nad węzłem, ale zdarzenie mouseout nie jest uruchamiane.
Usunąłem funkcję, aby potwierdzić problem. Działa dobrze w firefoxie, ale nie w żadnej wersji IE. Używam jquery tutaj dla prędkości. Rozwiązania mogą być w zwykłym starym javascriptu, który będzie preferencją, ponieważ może potrzebować wrócić do strumienia.
Nie mogę używać z-index tutaj, ponieważ elementy są vml, biblioteka jest Raphael i używam wywołania toFront. Próbka użyciu UL/li pokazać problem w prosty przykład
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="js/jquery.min.js" type="text/javascript"></script>
<style>
li
{
border:1px solid black;
}
</style>
</head>
<body>
<ul><li>Test 1</li></ul>
<ul><li>Test 2</li></ul>
<ul><li>Test 3</li></ul>
<ul><li>Test 4</li></ul>
<script>
$(function(){
$("li").mouseover(function(){
$(this).css("border-color","red");
this.parentNode.appendChild(this);
});
$("li").mouseout(function(){
$(this).css("border-color","black");
});
});
</script>
</body>
</html>
Edit: Oto link do pasty js kosza, aby zobaczyć go w akcji. http://jsbin.com/obesa4
** Edytuj 2: ** Zobacz wszystkie komentarze na wszystkie odpowiedzi, zanim opublikujesz jako dużo więcej informacji.
Nie mogę zrozumieć Twojego posta. chcesz, aby zdarzenie 'mouseout' było uruchamiane, gdy twoja mysz nadal znajduje się nad elementem? jakie jest twoje prawdziwe pytanie? – lincolnk
A dla this.parentNode.appendChild (this) ;, próbujesz ponownie dodać istniejący element LI? Dlaczego nie dodać do niej klasy CSS zamiast dodawać/usuwać ten sam element za pomocą nowego CSS? Czy twój oryginalny kod obejmuje dodanie zupełnie nowego elementu z innego miejsca w UL, aby naśladować efekt "rozszerzonego" rozmiaru, o którym wspomniałeś na początku? – Gary
Linkol Próbuję uzyskać przykładowy kod do pracy, np. Tak jak w firefox. Zdarzenie mouseout nie uruchamia się. Używam li elementów jako przykład. Jak mówię w moim poście, elementy są w rzeczywistości elementami VML. Więc rzeczy takie jak indeks z-z lub dodawanie klas nie zadziałają, chyba że ludzie mogą udowodnić, że są inni. – johnwards