jQuery .klicken Sie auf() funktioniert nicht in Internet Explorer 9/10
Den unten, ist Teil von einem größeren Projekt (offensichtlich) und es ist in Ordnung, die in Chrome, Firefox und Opera, aber der .klicken Sie auf () - Funktionen nicht aufgerufen IE9 oder 10.
jQuery('.current img').hover(function() {
var thisElem = jQuery(this);
thisElem.parent().parent().find('.hotspot span:not(.select-image)').remove();
thisElem.parent().parent().find('.hotspot img').parent().find('span.select-image').remove();
jQuery('<span class="zoom-out"></span>').prependTo(thisElem.parent()).click(function() {
z -= .1;
z = Math.max(z, 1);
jQuery(this).parent().find('img').attr('src', '<?php echo $urlPrefix; ?>/zcard-thumbnail-image/photos/<?php echo $modelId; ?>/low/' + i + '/' + (w * z) + '/' + (h * z) + '/file');
});
jQuery('<span class="select-image"></span>').prependTo(thisElem.parent());
jQuery('<span class="zoom-in"></span>').prependTo(thisElem.parent()).click(function() {
z += .1;
z = Math.min(z, 5);
jQuery(this).parent().find('img').attr('src', '<?php echo $urlPrefix; ?>/zcard-thumbnail-image/photos/<?php echo $modelId; ?>/low/' + i + '/' + (w * z) + '/' + (h * z) + '/file');
});
});
Soweit ich das beurteilen kann, der .klicken Sie auf() ist nicht verbindlich, da die Elemente noch nicht existieren. Wenn ich stattdessen mit jQuery(Ziel).prepend(element), dann eine Warnung Verzug die weitere Ausführung, und dann das .klicken Sie auf() bindet, funktioniert alles einwandfrei. Leider ersetzen die Warnungen mit delay() nicht in der gleichen.
Hat jemand Vorschläge, bitte?
- Und du hast natürlich erklären
z
,h
undw
irgendwo ? - Ha, ich habe =). Es funktioniert alles einwandfrei und in anderen Browsern, und wenn ich mit alerts zu einer Verzögerung zwischen der Erstellung des Elements und das hinzufügen von ein zu binden, alles, was auch die Arbeit im IE9/10. Es ist, als ob der IE ist einfach zu langsam bei der Aktualisierung der DOM befestigen, binden unmittelbar nach der Erstellung.
- Es ist eine viel ältere version aber das gleiche problem zu sein scheint in dieser (mock, wireframed bauen, der Teil des Systems bin ich jetzt Debuggen möchte, die ich fürchte, ich kann nicht Zugang zu): Entwicklung.qweb.co.uk/tim-bailey/zcard
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie können erstellen Sie einen Selektor zur Identifizierung der Elemente, die Sie nutzen könnten delegate() zum anbringen Handler - das funktioniert für Elemente, die noch nicht existieren.
Behoben!
Es stellte sich heraus, IE ausgelöst wurde das hover-Ereignis jedes mal, wenn die Maus sich über der injizierten Kind-Elemente, während andere Browser wurden nur auslösen, während Sie die Maus über das element, das binden, wie man es erwarten würde.
Veranstaltung.stopPropagation war nicht für mich arbeiten, so dass ich es fälschte mit Hilfe .Daten(). Hier ist das Endergebnis:
Massiven Dank an alle für die Hilfe mit diesem ein, und ich hoffe, dass die oben ist nützlich, um jemanden mit ähnlichen Problemen.
Habe es nicht versucht, also ich bin mir nicht sicher, ob die Verzögerung ist das problem sowieso, aber Sie können versuchen, verschob es mit einem manuellen setTimeout: