it-swarm-eu.dev

$ není definováno pomocí jQuery ve WordPressu

Vím, že jQuery je načten, protože můžu vypnout $ pro 'jQuery' a všechno se chová podle očekávání, ale pokud to nemůžu opravit, bude to chaotický scénář

Tento skript:

jQuery(document).ready(function(){
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr('href'));
        return false;
    })
});

Vytvoří chybu$ is not a function

Tento skript:

jQuery(document).ready(function(){
    jQuery("ul.vimeo_desc_feed li a").click(function(){
        alert(jQuery(this).attr('href'));
        return false;
    })
});

funguje dobře.

32
Mild Fuzz

Javascript můžete zabalit do funkce samo-vyvolání, pak předat jQuery jako argument, pomocí $ jako názvu lokální proměnné. Například:

(function($) {
  $(document).ready(function(){
    $("ul.vimeo_desc_feed li a").click(function(){
      alert($(this).attr('href'));
      return false;
    })
 });
}(jQuery));

by měly fungovat podle plánu.

Pokud si dobře pamatuji verzi jQuery dodanou WP (ta, kterou dostanete, pokud wp_enqueue_script('jquery')) umístí jQuery do konfliktu, okamžitě způsobí, že $ bude nedefinováno.

41
nobody

Už jsi skoro tam!

jQuery(document).ready(function($){
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr('href'));
        return false;
    })

});

Musíte předat odkaz na jQuery jako funkci $ do vaší metody nebo to nebude fungovat. Pokud jen umístíte $ dovnitř prvního volání function(), jak jsem to udělal výše, věci budou v pořádku.

31
EAMann

Předávání funkce jQuery je zkratka pro $(document).ready(...) a poté umístěním $ jako prvního parametru zpětného volání vytvoříte alias pro jQuery v rámci tohoto zpětného volání:

jQuery(function($) {
    $("ul.vimeo_desc_feed li a").click(function(){
        alert($(this).attr('href'));
        return false;
    });
});

Dokumentaci naleznete zde zde .

6
rohmann