2010-12-10 7 views
2

L'extrait jQuery suivant échoue si une page inclut également mootools-core.js.Incompatibilité de mootools avec jQuery

L'objet foo2 n'a aucun élément. C'est parce que find ("# content") ne retourne rien.

var foo1 = $("<div><div id='content'>HAGGIS</div></div>"); 
var foo2 = foo1.find("#content"); 

alert("foo1("+foo1.length+"): "+$('<div>').append(foo1.clone()).remove().html() 
    + "\n\n" + 
     "foo2("+foo2.length+"): "+$('<div>').append(foo2.clone()).remove().html()); 
+1

Que ressentez-vous qui vous fait penser que ce n'est pas? Je viens de mettre en place ici: http://jsfiddle.net/eSGBx/ et il semble que cela montre ce que vous attendez. – spinon

+0

@spinion, ma boite d'alerte dit "foo2 (0):" me dire que foo2 est vide. Mais j'ai essayé votre lien et je vois que ça fonctionne. Hmmm .... – richb

+0

Je viens de le tester aussi bien et ça marche bien. – simshaun

Répondre

0

Faire une copie de getElementById et faire appel jQuery que l'on place. Pour ce faire, AVANT Mootools sont importées:

Element.prototype._getElementById = Element.prototype.getElementById; 

Ensuite, faire une recherche et de remplacement dans votre source jQuery pour context.getElementById et les remplacer par context._getElementById. Il n'y a que 4 occurrences dans jquery-1.4.4.

1

getElementById est dans l'objet de document si c'est le code correct:

Document.prototype._getElementById = Document.prototype.getElementById; 

Cela ne fonctionne que dans Chrome (9.0.597.98), je vais essayer une autre solution ...

New Edition: happly je l'ai! Fonctionne dans tous les navigateurs testés (hourra!):

document._getElementById = document.getElementById;