2012-09-04 20 views
27

que podría tener un error en un documento .js en un tema que tengo de compra:

$('.tagcloud a').wrap('<span class="st_tag" />'); 

Estoy tratando de resolverlo, pero no soy un programador por lo que don' t saber cómo. El sitio es este: http://www.framerental.com.

+0

para ser honesto si has pagado por el tema y no se ha hecho muchas otras personalizaciones a su sitio (ya que no es un programador después de que al l) Me pondría en contacto con su soporte – TommyBs

Respuesta

-3

jQuery es posible que falte.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

+0

es posible, pero wordpress y la mayoría de CMS $ no está configurado por defecto. –

0

Si ha incluido jQuery, puede haber un conflicto. Intente usar jQuery en lugar de $.

90

Utiliza jQuery.noConflict(); Entonces $ no está definido.

Puede leer más sobre esto aquí docs

tratar de modificar su código de esta manera (añadir $ señal para la función de lista):

jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
}); 
+0

ok !! Ahora funcionan algunas cosas pero ha aparecido otro error: La ventana de Resizererror resiza no está definida. Línea: jQuery (ventana) .bind ("resize", resizeWindow); función resizeWindow (e) { var newWindowWidth = jQuery (ventana) .width(); – user1645326

+0

Trate de definir la función antes de la expresión de enlace. – jurka

+0

Esto corrigió todos mis errores con un viejo tema de WP después de comentar el viejo jQuery "en cola" del tema. Francamente, encuentro que el sistema "wp_enqueue_script" es realmente molesto, artificial, demasiado complicado e innecesario. Deseo que WordPress oculte/compartimentalice su propio código js para los paneles de administración y se aparte de nosotros para usar jQuery como queremos usarlo. ¿"Wp_enqueue_script" pasa las pruebas de Google PageSpeed ​​Insight? Probablemente no. O eso o simplemente requiere que todos los plugins y temas de WP usen el mismo jQuery, entonces todos estarían en la misma página y podríamos avanzar todos juntos. –

9

O usted no está incluyendo jQuery conjunto de herramientas/lib , como algunos han sugerido, o hay un conflicto de clases. Para probar: incluir jQuery y prueba como esta:

console.log($); 
console.log($ === jQuery); 

Si $ no es indefinido, y $ === jQuery registros falsos, que sin duda tiene un conflicto en sus manos. Reemplazar su $ con jQuery resuelve eso, pero eso puede ser bastante tedioso (toda esa escritura extra ...). En general, comienzo mis scripts con $jq = _$ = jQuery; para al menos tener una referencia más corta al objeto jQuery.
Por supuesto, antes de hacer eso, comprobar para ver si usted no está accidentalmente anulando las variables que se han fijado de antemano: console.log($jq, _jQ, _$); el que sea noundefined deben ser dejados solos, por supuesto

+0

Elias parece que tienes la respuesta, pero mientras no sea programador, siento que estás hablando en chino. ¿Hay alguna solución fácil para mí? Estoy completamente perdido :-( – user1645326

+0

@ user1645326: Sí, lo hay. Su comentario debajo de la respuesta de jurka me dice que no está escribiendo todo el código jQ dentro del envoltorio 'jQuery (document) .ready (function ($) { 'función, lo que debería. Además, el' resizeWindow' debería obtener su de '$ (this) .width();' en lugar de 'jQuery (ventana) .with();' pero quizás lo más importante: el error dice todo: hay un error tipográfico en su código: simplemente busque en su código 'resiza window', y reemplácelo con' resizeWindow' ... –

23

errores de función son una cosa común en casi todos los sistemas de administración de contenido y hay algunas formas en que puede abordar esto.

  1. Envuelva su código usando:

    <script> 
    jQuery(function($) { 
    
    YOUR CODE GOES HERE 
    
    }); 
    </script> 
    
  2. También puede utilizar la API de jQuery usando noConflict();

    <script> 
    $.noConflict(); 
    jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    }); 
    // Code that uses other library's $ can follow here. 
    </script> 
    
  3. Otro ejemplo del uso de noConflict sin utilizar documento listo:

    <script> 
    jQuery.noConflict(); 
        (function($) { 
         $(function() { 
          // YOUR CODE HERE 
         }); 
        }); 
    </script> 
    
  4. Incluso se puede elegir para crear su alias para evitar conflictos de este modo:

    var jExample = jQuery.noConflict(); 
    // Do something with jQuery 
    jExample("div p").hide(); 
    
  5. Sin embargo, otra solución ya es renombrar todos referances de $ de jQuery:

    $("div p").hide(); a jQuery("div p").hide();

6

Sólo tiene que añadir esto:

<script> 
var $ = jQuery.noConflict(); 
</script> 

a la etiqueta principal en header.php. O en caso de que quiera utilizar el signo de dólar en el área de administración (o en algún lugar, donde no se usa header.php), justo antes del lugar donde desea usarlo.

(Puede haber algunos conflictos que no estoy al tanto de, probarlo y si hay, utilice las otras soluciones que se ofrecen aquí o en el enlace de abajo.)

Fuente: http://www.wpdevsolutions.com/use-the-dollar-sign-in-wordpress-instead-of-jquery/

+0

Esto funciona si pone en cola sus propias secuencias de comandos de tema personalizado en el pie de página. – Turbojohan

9

lugar de hacer esto:

$(document).ready(function() { }); 

que debería estar haciendo esto:

jQuery(document).ready(function($) { 

    // your code goes here 

}); 

Esto se debe a que WordPress puede usar $ para algo que no sea jQuery, en el futuro, o ahora, por lo que debe cargar jQuery de forma que $ se pueda usar solo en una devolución de llamada lista para el documento jQuery.

+0

Esto funciona muy bien para cualquier cosa dentro del doc. listo. Si lo desea en general (funciones de ventana), vea la respuesta de Savage anterior. – cbloss793

4

he añadido un archivo de secuencia de comandos personalizada que carga al final de la sección head, y añade lo siguiente en la parte superior:

(function (jQuery) { 
    window.$ = jQuery.noConflict(); 
})(jQuery); 

(Esta es una modificación de la respuesta de Fanky)

2

Aparte noConflict, esto es útil también:

(function($) { 
    // Variables and DOM Caching using $. 
    var body = $('body'); 
    console.log(body); 
})(jQuery); 
+0

¡ESTO ES EXCELENTE! ¿El truco, gracias? – Andy

Cuestiones relacionadas