$ WordPress'te jQuery kullanılarak tanımlanmadı


32

JQuery'nin yüklü olduğunu biliyorum, çünkü $'jQuery'i değiştirebilirim ve her şey beklendiği gibi davranıyor, ancak bunu düzeltemezsem bu karışık bir senaryo olacak

Bu komut dosyası:

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

Hata üretir $ is not a function

Bu komut dosyası:

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

iyi çalışıyor.

Yanıtlar:


42

Javascript'inizi kendi kendine çağıran bir fonksiyonun içine sarabilir, ardından yerel değişken ismi olarak jQuerykullanarak argüman olarak iletebilirsiniz $. Örneğin:

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

amaçlandığı şekilde çalışmalı.

Eğer doğru bir şekilde hatırlıyorsam, jQuery'nin WP tarafından sağlanan sürümünü (siz alırsanız wp_enqueue_script('jquery')) jQuery'yi hemen çatışmaya $sokarak tanımlanmamasına neden olur .


aah, görüyorum. El ile eklemeye çalışırdım, bu neden bu sorunla karşılaşmadığımı açıklıyor.
Hafif Fuzz

Teşekkür ederim, jQuery ile alternatif formatı son yerine başlangıçta kullanıyordum .. ama nasıl değer döndüreceğimi bulamadım, bu format ile kendi kendine çağırma işlevinden önce dönüş ekledim ve işe yarıyor.
eselk

Çok faydalı cevap.
MarkSkayff

32

Neredeyse oradasın!

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

});

JQuery'ye bir referansı $, metodunuza fonksiyon olarak aktarmanız gerekir, aksi halde çalışmaz. function()Yukarıda yaptığım ilk çağrıya sadece $ koyarsanız , işler yoluna girecek.


4
+1: jQuerySona koymaktan daha okunaklı .
fuxia

1
... ama isimsiz bir işlem yapmanın standart yolu değil. forum.jquery.com/topic/jquery-anonymous-function-calls
BryanH

5
Evet ve hayır. Her ikisi de bunu yapmanın "standart" yolları olarak kabul edilir. Biri $yerel olarak tanımlanmış bir singleton sınıfı yaratıyor . Diğeri sadece belgenin readyolayı için bir işleyici tanımlar ve jQuery nesnesini işleyiciye iletir $. readyOlaya bağlanmaya çalışıyorsanız , ikinci yöntem daha yaygın olarak kullanılır. Herhangi bir amaç için jQuery'e ihtiyacınız varsa ( $.browserörneğin , buna bağlı kalmak için), bir singleton sınıfı kullanırsınız.
EAMann

JQuery için +1 (document) .ready (function ($) {... jquery ve WordPress ile ilgili daha fazla bilgi de yazımda okuyabilir misin: wpengineer.com/2028/small-tips-using-wordpress-and-jquery .
bueltge

6

Bir işlevi jQuery'ye iletmek kısacasıdır, çünkü geri aramanızın ilk parametresi olarak $(document).ready(...)yerleştirerek $, bu geri çağırma içinde jQuery için bir takma ad oluşturursunuz:

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

Bunun için belgeleri burada görebilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.