2016-04-10 33 views
0

Çok kafam karıştı ... Sitemde çalışıyordum ve biraz jQuery ekledim. Testten sonra jQuery'nin hiçbir şey yapmadığını gördüm. Daha sonra düşünebildiğim en basit ama görünür kodu denedim:

<script type="text/javascript"> 
    $("html").click(function() { 
    $("html").html(""); 
    }); 
</script> 

Ancak bu bir şey yapmadı. Sadece "tanımsız" geri verir

Uncaught TypeError: $ is not a function 
    at <anonymous>:2:1 
    at Object.InjectedScript._evaluateOn (<anonymous>:848:140) 
    at Object.InjectedScript._evaluateAndWrap (<anonymous>:891:34) 
    at Object.InjectedScript.evaluate (<anonymous>:627:21) 

ve sadece $ giren: Ben js konsolunda aynı kod çalıştı ve tekrar bu hata var.

Soruşturmayı araştırdım ve Gemfile'ı yanlışlıkla taşıdığımı ve sunucunun jquery-rails gemine erişemediğini gördüm. Ama onu geri yükledikten ve sunucuyu yeniden başlattıktan sonra sorun ortadan kalkmadı.

Daha sonra sayfamda jQuery'nin çalışmasını engelleyen bazı hatalı kodlar olduğunu düşündüm. Tüm kodu kaldırdım, bu sadece boş bir belgeydi, çalıştırdı ve tekrar denedi, ancak konsolda aynı hataları aldım.

benim app head bu içerir:

<head> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
</head> 

Benim app/assets/javascripts/application.js hattını oluşturmak //= require jquery

Ve bundle install döner "jquery-raylar 4.1.1" içerir.

Daha önce herhangi bir sorun olmadan aynı sayfada çok fazla jQuery çalıştırdım. Sunucum aniden jQuery'yi anlamadı. Dünyada neler olabilirdi?

+0

söz konusu kod nedir? Diğer her şeyi dahil etmiş görünüyorsun, o zaman sen de bütün shebang'ı yapabilirsin. – MarsAtomic

+0

Yay çalışıyorsanız, sunucunuzu çalışır durumda tutar. 'Bin/spring stop' ı deneyin ve sunucunuzu yeniden başlatın. –

+0

@PetrGazarov Ben bahar koşuyorum ama ne dediğini denedim ve hiçbir şey değişmedi. –

cevap

6

bir jQuery işlevi sarın, bu şekilde:

// Note the "$" inside function() - that's the key 
jQuery(document).ready(function($) { 

    $("html").click(function() { 
    $("html").html(""); 
    }); 

}); 
+0

Um ... evet, şimdi çalışıyor. Dünyada ne oldu? Diğer jQuery'm bir gün önce hiç sorun değil. –

+1

Bu bir yarış durumu sorunudur. Sayfa yüklenmeden önce $ 'yi çağırıyordunuz. Yukarıdaki örnekte, gövdenin işlevi içindeki kod sadece sayfa bittiğinde yüklenir. –

0

Eğer app/assets/application.js jquery eklemeyi ihmal etmeyin:

//= require jquery 
//= require jquery_ujs 
+0

Oh evet, dahil. –

+0

Ve bu sayfayı, geliştirilmekte olan sayfayı görüntülediğinizde sayfanızdaki etiket yükünden mi görüyorsunuz? Konsolda herhangi bir hata var mı? –

+0

Ne demek istiyorsun? Sayfamın kaynak kodunu görüntülediğimde, üzerinde bir yerde "// = jquery gerekiyor" görmeyi beklemeliyim? –

İlgili konular