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

Я знаю, что 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;
    })
});

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

30 голосов | спросил Mild Fuzz 14 +04002010-10-14T19:27:21+04:00312010bEurope/MoscowThu, 14 Oct 2010 19:27:21 +0400 2010, 19:27:21

3 ответа


34

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

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

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

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

ответил nobody 14 +04002010-10-14T19:38:33+04:00312010bEurope/MoscowThu, 14 Oct 2010 19:38:33 +0400 2010, 19:38:33
31

Ты почти там!

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

});

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

ответил EAMann 14 +04002010-10-14T19:41:38+04:00312010bEurope/MoscowThu, 14 Oct 2010 19:41:38 +0400 2010, 19:41:38
6

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

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

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

ответил rohmann 10 +04002013-10-10T03:18:45+04:00312013bEurope/MoscowThu, 10 Oct 2013 03:18:45 +0400 2013, 03:18:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132