jQuery în WordPress - De ce nu funcționează?

25 iul. 2012, 00:21:04
Vizualizări: 14.4K
Voturi: 2

Folosesc acest model de bază: www.html5reset.org/

Este destul de bun, dar cred că ceva nu merge bine cu jQuery în el.

În functions.php scrie:

// Încarcă jQuery
    if ( !function_exists(core_mods) ) {
        function core_mods() {
            if ( !is_admin() ) {
                wp_deregister_script('jquery');
                wp_register_script('jquery', ("//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"), false);
                wp_enqueue_script('jquery');
            }
        }
        core_mods();
    }

Pare în regulă - este corect?

Există și un fișier JS predefinit. În acest fișier scrie:

// remap jQuery la $
(function($){})(window.jQuery);

Nu știu exact ce face asta, dar pare să fie în regulă.

Pentru a testa dacă jQuery funcționează, am încercat următoarele - niciunul nu funcționează, jQuery nu este definit.

$(document).ready(function() {
    alert("Acesta este un test.");
});

jQuery(document).ready(function() {
    alert("Acesta este un test.");
});

$(document).ready(function($) {
    alert("Acesta este un test.");
});

Deci, poți să-mi spui ce ar putea fi în neregulă cu asta? Mulțumesc!

1
Comentarii

(function($){})(window.jQuery); este o metodă încapsulată (pentru a evita poluarea spațiului de nume global), așa că nu văd cum $ ar putea fi disponibil în afara acelei funcții.

Joseph Leedy Joseph Leedy
25 iul. 2012 05:39:14
Toate răspunsurile la întrebare 2
0

doar ca să ajut puțin mai departe... WordPress rulează jQuery în modul 'sigur'

ceea ce înseamnă că în WordPress trebuie să scrii cod astfel:
jQuery(document).ready(function() {

și nu așa:

$(document).ready(function() {

Dar ceea ce a făcut HTML5BP este să adauge acest fragment de cod interesant (probabil din bunătate pentru a ajuta dezvoltatorii)

// remapează jQuery la $<br/> (function($){})(window.jQuery);

Pentru informație, există o a 3-a metodă de a reveni la simbolul $ pentru jQuery, și anume să începi codul astfel:

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

de acum înainte, în codul tău poți folosi $ pentru a te referi la jQuery

25 iul. 2012 00:36:13
3

Există o greșeală de tipar în wp_register_script() unde lipsește "http:" în URL. Repară asta și vei reuși măcar să încarci jQuery.

Ca o observație, mulți consideră că nu este o practică bună să suprascrii jQuery-ul implicit din WordPress și am eliminat codul la care te referi din tema mea personalizată HTML5reset pe care o folosesc.

25 iul. 2012 00:25:05
Comentarii

Aceasta este o adresă URL relativă la protocol, dar se pare că WordPress nu le poate gestiona.

Milo Milo
25 iul. 2012 00:56:10

Bine, mulțumesc! Am eliminat-o și acum funcționează. Ai vreo resursă care să explice de ce este considerată o practică proastă?

Sven Sven
25 iul. 2012 01:41:11

Este o cerință a "Recenziei temei" pentru includerea în depozitul .org. Prin a lăsa jQuery neatins, te asiguri că WordPress și alte plugin-uri pot presupune în siguranță versiunea de jQuery pe care o folosești. Poți evita acest lucru probabil prin a te asigura mereu că toate temele tale sunt actualizate pentru a folosi versiunea standard actuală de jQuery din WP, dar acest lucru este destul de greu de întreținut.

mrwweb mrwweb
25 iul. 2012 19:33:02