2010-09-30 10 views
5

He estado trabajando en este sitio durante las últimas dos semanas y todo ha estado funcionando sin problemas hasta ahora. Tengo javascripts conflictivos y aunque sé qué método usar para resolver el problema (jquery noconflict), no tengo idea de cómo usarlo.No estoy seguro de cómo usar la función jQuery noconflict

En mi caso, que tengo:

  • un menú desplegable que utiliza el js prototipo y un formulario de contacto que utiliza unos archivos de jQuery para la notificación de validación y error personalizado js
  • y

La carcasa es clásica, funcionan bien por separado, pero no juntas. He leído un grupo de sitios web y la mayoría apunta a la solución de utilizar:

<script> 

    jQuery.noConflict(); 

    // Use jQuery via jQuery(...) 
    jQuery(document).ready(function(){ 
    jQuery("div").hide(); 
    }); 

    // Use Prototype with $(...), etc. 
    $('someid').hide(); 

</script> 

Im nuevo en Javascript, así que no sé qué hacer con este fragmento.

Ésta es mi cabecera:

<script src="js/prototype.js"></script> 
    <script src="js/drop-o-matic.js"></script> 
    <script> 

    jQuery.noConflict(); 

    // Use jQuery via jQuery(...) 
    jQuery(document).ready(function(){ 
    jQuery("div").hide(); 
    }); 

    // Use Prototype with $(...), etc. 
    $('someid').hide(); 

    </script> 

    <!--[if lt IE 9]> 

<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 

    <!-- <script src="http://code.jquery.com/jquery-latest.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js"></script> 
<script src="js/jquery.jigowatt.js"></script> --> 


    <script> 
    document.createElement("article"); 
    document.createElement("footer"); 
    document.createElement("header"); 
    document.createElement("hgroup"); 
    document.createElement("nav"); 
    document.createElement("aside"); 
    document.createElement("section"); 
    document.createElement("menu"); 
    document.createElement("hgroup"); 
</script> 

que sólo tienen los prototipos de JS & gota-o-matic en efecto y los archivos js para la forma se comenta (justo después de comentario IE).

El prototipo & gota-o-matic son para un navegador HTML 5 (no tiene identificadores, simplemente

 <nav> 
      <ul> 
       <li><a href="index.php" class="home">Home</a></li> 
       ... 
       ... 
       ... 
      </ul> 
     </nav> 

¿Qué debo hacer para que los scripts de trabajar juntos?

Gracias por la ayuda.

Respuesta

9

En primer lugar, a la que llama jQuery.noConflict(), incluso antes de incluir la librería jQuery! Eso definitivamente no funcionará. Debe incluir etiqueta de script jQuery antes de llamar noConflict ...

<script src="js/prototype.js"></script> 
<script src="js/drop-o-matic.js"></script> 
<script src="http://code.jquery.com/jquery-latest.js"></script><!-- IMPORTANT --> 
<script> 
    jQuery.noConflict(); 
</script> 

También puede dar jQuery su propio alias si desea ...

var $j = jQuery.noConflict(); 

$j(document).ready(function() { 
    $j("div").hide(); 
}); 

Para obtener más información, lea la API documentación con respecto a Using jQuery with Other Libraries

+0

Gracias Josh Stodola, es lindo y me ayudó –

0

Una buena cosa que puedes intentar con jQuery es el uso:

$jq = jQuery.noConflict(); 

y luego en vez de usar jQuery $ o derecho de su código con

$jq("document").ready(function(){ 

// rest of your jQuery code inside; 

}); 
+0

@Gaby: Gracias, pero ¿qué código de jquery debo poner exactamente? No tengo ni idea. – gdinari

+0

@gdinari, la respuesta pertenece a @sushil (* acabo de formatear el código en su respuesta *). pero para avanzar en la discusión, ¿está seguro de haber incluido el marco de jquery en su código? en su código de ejemplo, parece que está en los comentarios y después de la parte sin conflicto. Eche un vistazo a @josh answer –

+0

Comenté el jquery porque no estaba funcionando con los scripts de la barra de navegación. Veré la respuesta de Josh, parece que es el mejor enfoque. Gracias mil – gdinari

Cuestiones relacionadas