web-gelistirme-sc.com

Drupal 7'de JQuery Kullanımı

Kendi Drupal 7 modülümü yazıyorum ve içinde JQuery kullanıyorum.

$('#field').toggle();

Ama bu hatayı alıyorum:

TypeError: Property '$' of object [object DOMWindow] is not a function

JQuery yüklü değil gibi görünüyor. Aksi takdirde $ tanımlanmalıdır.

Gerçekte başlığa dahil etsem de:

<script type="text/javascript" src="http://rockfinder.de/misc/jquery.js?v=1.4.4"></script>

Drupal’da JQuery’i etkinleştirmek için başka bir şey yapmam gerekir mi? $ Drupal tarafından yazılıyor mu?

Bu web sitesi: http://rockfinder.orgapage.de

32
JochenJung

Drupal 7 yükseltme kılavuzundan:

Javascript uyumlu hale getirilmelidir. jQuery'den diğer kütüphaneler ile. senin .__ etrafında küçük bir sarmalayıcı ekleyerek. mevcut kod:

(function ($) {
  // Original JavaScript code.
})(jQuery);

$ Global artık .__ ile ilgili olmayacak. jquery nesnesi. Bununla birlikte, bu inşaat, yerel değişken $ jquery'ye atıfta bulunacaktır, jQuery'e $ .__ ile giriş yapın. Neyse, kod ise yok. .__ kullanan diğer kütüphanelerle çatışma. $ global.

Kodunuzdaki $ değişkeni yerine 'jQuery' değişkenini de kullanabilirsiniz.

89
Eaton

Firebug’a göre, jQuery dosyanız yükleniyor:

alt text

Fakat $, başka bir şey tarafından üzerine yazılmıştır:

alt text


Yapmanız gereken, $ değişkeninin, kendisini asıl argüman olarak jQuery nesnesini kullanarak çağıran bir işlevle kullanımını kapsüllemek:

(function ($) {

 // in this function, you can use the $ which refers to the jQuery object

}(jQuery));
14
Andreas Grech

Muhtemelen betiğiniz bu şekilde başlatılmadıysa, Drupal.behaviors.YOURTHEMENAME kullanmanız gerekir.

(function ($) {
Drupal.behaviors.YOURTHEMENAME = {
attach: function(context, settings) {

/*Add your js code here*/
alert('Code');

}

};
})(jQuery);    
8
Guus

Aşağıdakileri kullanarak js için ayrı bir dosya oluşturabilir ve js dosyası ekleyebilirsiniz:

drupal_add_js('path', 'module_name');
1
Yuri Kevin

"$ bir işlev değil" jQuery ile çalışırken karşılaşabileceğiniz çok yaygın bir hatadır. Aşağıda verilen cevapları deneyebilirsiniz:

(function($){
//your can write your code here with $ prefix
})(jQuery);

OR

jQuery(document).ready(function($){
//Write your code here
});

Temel olarak bu, kodumuzun JQuery için $ kısayolu çalıştırmasına ve kullanmasına izin verecektir.

0
Haripal Rao