2012-04-11 28 views
2

ich eine abgespeckte Beispiel aufgebaut haben, was auf IE nicht funktioniert: http://so.demuyt.net/case1/jQuery Append funktioniert nicht (konsistent) auf IE?

(. IE8 jQuery 1.7.1)

in IE ein Datum Klicken auf nichts tut, wird ein zweites Datum klicken setzen eine "grüne Pille" neben dem ersten und zweiten ausgewählten Datum. Wenn Sie dies in Chrome tun, wird 1 Tablette mit dem ersten Klick und 1 Tablette mit dem zweiten Klick abgegeben.

ich eine 'Pille' wie folgt hinzu:

$("#canvas").append('<span class="label label-success Workcounter ' + date + ' ' + calendarName + '">1</span>'); 

ich die 'Pille' Position wie folgt aus:

$(".Workcounter." + date + '.' + calendarName).position({ of : $(".Work-date-highlight."+calendarName+"."+date) , at : "left top" , offset : "3 3" }); 

Es gibt keine Fehler in js Konsole, was ich bemerkt habe ist, dass Im Debug-Modus sehe ich, dass die Pille in Chrome hinzugefügt wird, während ich sie im IE nicht sehen kann (selbst wenn ich auf das zweite Datum klicke).

Jede Hilfe oder Zeiger würde sehr geschätzt werden, um IE wie Chrome & FireFox zu verhalten.

+0

ich nur in IE7 getestet, IE8, IE9 und IE10 und es scheint in jedem zu funktionieren. Ich habe ein Datum angeklickt und die grüne Pille wurde links oben hinzugefügt. – Sampson

+0

@ JonathanSampson keine Möglichkeit .. Also das erste Datum, das Sie klickten (nur eines), zeigte sofort eine Pille, ohne auf ein zweites Datum klicken zu müssen? – tomdemuyt

+0

@ JonathanSampson okay, also habe ich IE7 überprüft: funktioniert. IE8 funktioniert nur mit 'Compatibility View' für mich, war das für dich eingeschaltet? – tomdemuyt

Antwort

1

Die Zeile, die Sie verwenden, um das Element zu positionieren, scheint mir das Problem zu verursachen, versuchen Sie ersetzen:

$(".Workcounter." + date + '.' + calendarName).position({ of : $(".Work-date-highlight."+calendarName+"."+date) , at : "left top" , offset : "3 3" }); 

mit:

var datePos = $(".Work-date-highlight."+calendarName+"."+date).position(); 

$(".Workcounter." + date + '.' + calendarName).css({ 
    left: datePos.left - 3, 
    top: datePos.top - 3, 
    position: 'absolute' 
}); 
+0

In der tatsächlichen Site musste ich .position() durch .offset() ersetzen, weil der Kalender in einem übergeordneten div war, das nicht an (0,0) platziert wurde. Vielen Dank! – tomdemuyt

Verwandte Themen