WordPress में jQuery का उपयोग करके $ को परिभाषित नहीं किया गया है


32

मुझे पता है कि 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;
    })
});

ठीक काम करता है।

जवाबों:


42

आप अपनी जावास्क्रिप्ट को सेल्फ-इनवोकिंग फंक्शन के अंदर लपेट सकते हैं, फिर स्थानीय चर नाम के रूप में 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 को बिना किसी संघर्ष के डाल देता है, जिसके कारण $अपरिभाषित हो सकता है।


आह, मैं देख रहा हूँ। मैं इसे हाथ से जोड़ता था, जो बताता है कि मैं इस मुद्दे पर क्यों नहीं आया हूं।
हल्के फज

धन्यवाद, मैं अंत के बजाय शुरुआत में jQuery के साथ वैकल्पिक प्रारूप का उपयोग कर रहा था .. लेकिन यह पता नहीं लगा सका कि एक मूल्य कैसे वापस किया जाए, इस प्रारूप के साथ मैंने सिर्फ आत्म-आहरण समारोह से पहले रिटर्न जोड़ा, और यह काम करता है।
18

बहुत उपयोगी जवाब।
MarkSkayff

32

तुम लगभग वहां थे!

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

});

आपको $अपने तरीके से फ़ंक्शन के रूप में jQuery के लिए एक संदर्भ पास करना होगा या यह काम नहीं करेगा। यदि आप पहली function()कॉल के अंदर एक $ रखते हैं जैसा कि मैंने ऊपर किया है, तो चीजें ठीक काम करेंगी।


4
+1: यह jQueryअंत में डालने से अधिक पठनीय है ।
FUXIA

1
... लेकिन यह एक अनाम कार्य करने का मानक तरीका नहीं है। forum.jquery.com/topic/jquery-anonymous-function-calls
ब्रायनह

5
हां और ना। वे दोनों इसे करने के तरीके "मानक" मानते हैं। एक एकल वर्ग बनाता है जिसने $स्थानीय स्तर पर परिभाषित किया है। अन्य सिर्फ दस्तावेज़ की readyघटना के लिए एक हैंडलर को परिभाषित करता है और हैंडलर में jQuery ऑब्जेक्ट को पास करता है $। यदि आप readyईवेंट पर हुक करने का प्रयास कर रहे हैं , तो दूसरी विधि अधिक व्यापक रूप से उपयोग की जाती है। यदि आपको किसी अन्य उद्देश्य के लिए jQuery की आवश्यकता है ( $.browserउदाहरण के लिए हुक करने के लिए), तो आप एक एकल वर्ग का उपयोग करेंगे।
एमान

+1 jQuery के लिए (document) .ready (समारोह ($) {... मोर jQuery और वर्डप्रेस बारे में infos आप भी मेरी पोस्ट पर पढ़ सकते हैं: wpengineer.com/2028/small-tips-using-wordpress-and-jquery
बुलेटी

6

JQuery के लिए एक फ़ंक्शन पास करना आपके कॉलबैक के पहले पैरामीटर के रूप में $(document).ready(...)तब तक शॉर्टहैंड है $, आप उस कॉलबैक के भीतर jQuery के लिए एक उपनाम बनाते हैं:

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

आप इस के लिए प्रलेखन देख सकते हैं यहां

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.