Drupal 7 जिस तरह से जावास्क्रिप्ट और jQuery को संभालता है, उसमें बदलाव होता है


14

मैं वर्तमान में एक जावास्क्रिप्ट स्क्रिप्ट विकसित कर रहा हूं जो एक प्रशासन पृष्ठ पर चलती है। मैं Drupal 7 में किए गए बदलावों को पढ़ता हूं, अर्थात् document.ready()अपने स्वयं के jQuery फ़ंक्शन से स्थानांतरित करता हूं । हालाँकि, निम्न स्क्रिप्ट काम नहीं करता है।

(function ($) {
  console.log('hello');
  $('#edit-apiusername').append('test');
})(jQuery);

console.log()फायरिंग है और मैं आउटपुट देख सकता हूं, लेकिन सरल परिशिष्ट काम नहीं करता है। फ़ील्ड आईडी सही है।
मुझे यकीन नहीं है कि मैं यहां क्या याद कर रहा हूं, लेकिन मुझे संदेह है कि इसका उस तरह से क्या होगा जिस तरह से मैं ऑब्जेक्ट को संदर्भित कर रहा हूं। दृश्य 3 जावास्क्रिप्ट कोड को देखते हुए, मैं देख सकता हूं कि यह एक समान तरीके से किया गया है।


यदि आप कंसोल .log ($ ('# एडिट-एप्रिनसनेम')); क्या यह ऑब्जेक्ट को आउटपुट करता है, अर्थात पृष्ठ पर jQuery द्वारा पाया जा रहा तत्व है?
बुद्ध

Drupal 6 के साथ भी आप Drupal व्यवहार का उपयोग करने वाले थे, इसके बजाय document.ready। क्या आप रिपोर्ट कर रहे Drupal 7 के लिए विशिष्ट नहीं है
kiamlaluno

जवाबों:


28

मुझे लगता है कि आपने परिवर्तनों को गलत समझा।

शॉर्टकट (function ($) { ... })(jQuery);के $रूप में उपयोग की अनुमति देने के लिए जावास्क्रिप्ट कोड को लपेटा जाना चाहिए jQuery। यह jQuery को अन्य पुस्तकालयों के साथ अच्छी तरह से खेलने की अनुमति देने के लिए है । इस फ़ंक्शन में, यदि आप इसे बदलना चाहते हैं, तो भी आपको DOM के लोड होने का इंतजार करना होगा। यही आपके कोड को लपेटता jQuery.ready(function(){ ... })है।

लेकिन उपयोग करने के बजाय jQuery.ready(function(){ ... }), आपको व्यवहार का उपयोग करना चाहिए ताकि ड्रुपल के जावास्क्रिप्ट को पता चल सके कि आपका कोड DOM से कुछ भी ( या हटाए गए ) संसाधित करना चाहता है ।

(function ($) {
  Drupal.behaviors.exampleModule = {
    attach: function(context, settings) {
      $(context).find('#edit-apiusername').append('test');
    }
  }
})(jQuery);

1

आप संपूर्ण jQuery ऑब्जेक्ट को अपनी पसंद के किसी अन्य वेरिएबल में बदलने पर भी विचार कर सकते हैं, जैसे:

$j = jQuery.noConflict();

आप इसे तैयार स्टेटमेंट के बाहर रख देंगे ताकि इसे एनकैप्सुलेशन के बाहर पहुँचा जा सके।

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