2008-09-17 5 views

Antwort

0

Entschuldigung, das war eine Art halbherzige Frage meinerseits. Ich gehe jetzt durch meine .js-Dateien und beseitige ganze Blöcke von Code. Ich habe es zu einer bestimmten JS-Datei isoliert.

vielen Dank für das Lesen durch diese Frage und die Antwort.

2

Sie wahrscheinlich versuchen, etwas zu tun ....

alert($("#myElement").tagName); 

Sie dies tun sollten ...

alert($("#myElement")[0].tagName); 
+0

alert ($ ("# myElement") (0) .tagName erhalten.) Möglicherweise die bevorzugt würde Syntax für Ihr Beispiel. –

+0

Die [jQuery-Dokumentation] (http://docs.jquery.com/Core/get#index) sagt: "Diese als $ (this) .get (0) bezeichnete Funktion entspricht der Verwendung der eckigen Klammernotation das jQuery-Objekt selbst wie $ (this) [0]. " – jessegavin

1

Stellen Sie sicher, dass Sie Ihr Skript ausführen nachdem die Seite gerendert Wenn sich Ihr Skript oben auf der Seite befindet und sofort ausgeführt wird und Ihr DIV unter diesem Skript liegt, ist das DIV noch nicht vorhanden.

1

Wenn Sie es nur im Internet Explorer zu sehen, könnte es ein Problem mit der DivX Web-Plugin sein:

http://drupal.org/node/1038058

Ausgabe auf der DivX-Website bestätigt wird, die „Fixed in der nächsten Version sagt "(April 2011).

http://labs.divx.com/node/16824

Im Wesentlichen ist der Fehler, dass DivX die el.appendChild() Funktion mit einem Intercept ersetzt, die den Tag-Namen in Kleinbuchstaben versucht, aber nicht die Mühe zu sehen, zu überprüfen, ob es sich um ein Textknoten ist. Das wird jQuery unterbrechen, wenn Sie versuchen, etwas wie $('body').append('hi!') zu tun. Außerdem kann das Element, das SWFObject unterbricht, nicht zurückgegeben werden.

Die Problemumgehung besteht darin, sicherzustellen, dass Sie append() niemals mit einem Textknoten oder mit mehreren Elementen auf oberster Ebene aufrufen. Wenn Sie eine Reihe von Elementen anhängen:

append($('<div>hi</div><div>there</div>')) 

stellen Sie sicher, sie in einem Top-Level-div wickeln Sie den implizierten Textknoten zu vermeiden:

append($('<div><div>hi</div><div>there</div></div>')) 

Hier ist eine vollständige Abhilfe für appendChild gebrochen, die Derselbe Ansatz kann für insertBefore und replaceChild verwendet werden, die den Fehler teilen. Der Divx JS wird einige Zeit nach dem Laden der Seite eingefügt, weshalb Sie möglicherweise nach diesem suchen möchten.

window.fixDivxPlayerBug = function() { 
    var b = document.getElementsByTagName('body')[0]; 
    if (window['ReplaceVideoElements'] && ! b.appendChildDivx){ 
     b.appendChildDivx = b.appendChild; 
     b.appendChild = function (el) { 
      if(el.tagName == null) { 
       var wrap = document.createElement('div'); 
       wrap.appendChild(el); 
       b.appendChildDivx(wrap); 
      } 
      else { 
       b.appendChildDivx(el); 
      } 
      return el; 
     }; 
    } 
}; 
Verwandte Themen