mildfuzz
  • 0
Мастер

$ не определен с помощью jQuery в WordPress

  • 0

Я знаю, что jQuery загружен, потому что я могу отключить $ jQuery, и все будет работать так, как ожидалось, но это будет беспорядочный сценарий, если я не смогу это исправить.

Этот сценарий:

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

Выдает ошибку$ is not a function

Этот сценарий:

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

работает отлично.

Share
  1. Вы можете обернуть свой javascript внутри самовызывающейся функции, а затем передать jQuery ей в качестве аргумента, используя $ в качестве имени локальной переменной. Например:

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

    должно работать по назначению.

    Если я правильно помню, версия jQuery, предоставленная WP (та, которую вы получаете, если вы wp_enqueue_script('jquery') ) немедленно переводит jQuery в режим отсутствия конфликтов, что приводит $ к неопределенности.

    • 0
  2. Ты почти там!

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

    Вы должны передать ссылку на jQuery как $ функцию в свой метод, иначе он не будет работать. Если вы просто поместите $ внутри первого function() вызова, как я сделал выше, все будет работать нормально.

    • 0
  3. Передача функции в jQuery является сокращением, поэтому $(document).ready(...), поместив $ в качестве первого параметра вашего обратного вызова, вы создаете псевдоним для jQuery внутри этого обратного вызова:

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

    Вы можете увидеть документацию для этого здесь.

    • 0

Оставить ответ

You must login to add an answer.