J'ai une liste d'éléments sur une page avec un ensemble de contrôles pour MoveUp, MoveDown et Delete.Les gestionnaires d'événements jQuery ne tirent pas dans IE
Les contrôles sont placés en haut de la liste, masqués par défaut. Comme vous mouseover une ligne d'article, je sélectionne les commandes avec jquery
//doc ready function:
..
var tools = $('#tools');
$('#moveup').click(MoveUp);
$('#movedn').click(MoveDn);
$('#delete').click(Delete);
..
$('li.item').mouseover(function(){
$(this).prepend(tools);
});
Cela fonctionne très bien dans Firefox .. les outils se déplacent dans la ligne actuelle, et les événements de clic appeler les fonctions ajax. Cependant, dans IE6 et IE7 .. aucun clic ne se produit. J'ai essayé de délier sur le mouseout et la reliaison sur chaque mouseover .. en vain.
J'ai également examiné diverses raisons en dehors de javascript (par exemple, les conflits png transparents, z-index, position: absolute) .. également aucune solution trouvée.
J'ai finalement eu besoin d'ajouter une rangée d'outils à chaque élément et afficher/masquer sur la souris sur/sur. Fonctionne aussi bien - le seul inconvénient est que j'ai plus de balises 'outils' sur ma page.
Est-ce que quelqu'un sait pourquoi IE ignore/supprime/tue les événements de souris une fois que les objets sont déplacés (en utilisant prepend)? Et pourquoi relancer l'événement après n'a également aucun effet? Je me suis fâché pendant presque 2 heures avant d'abandonner.
Assez juste, comme je l'ai dit, les événements sont perdus. Mais pourquoi ne pourrais-je pas ajouter les événements aux nouveaux objets? En outre, je ne veux pas copier les objets, il suffit de les déplacer. Encore une fois, si les événements sont perdus, je devrais être capable de se relier. En outre, si les événements ne se déclenchent pas, vous penseriez que le lien href serait suivi .. cela n'arrive pas non plus ... rien n'arrive du tout. – misteraidan
Il s'agit d'une limitation/bug du DOM d'IE et malheureusement, vous avez juste à vivre avec pour le moment si vous allez soutenir IE. En ce qui concerne le déplacement de l'élément, vous ne pouvez pas le déplacer sans le cloner en premier ou créer ce que l'on appelle une référence circulaire. Même lorsque vous déplacez vous avez besoin de var cloned = $ ("# element"). Clone (true); $ ("# élément"). remove(); $ ("newplace"). append (cloné); –
ok, donc clone c'est! merci tas. – misteraidan