質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.78%

railsでjQueryが作動しない

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 956

joru

score 40

前提・実現したいこと

railsのアプリケーションでスマートニュースやグノシーのような、スワイプタブ切替機能を実装したいと思っています。

参考記事に合わせて、jQueryのプラグインbxSliderを読み込んで、common.jsでイベントを指定しています

しかし、思ったような挙動が起こらず、調べてみるとjqueryが当たっていないようです

また、common.jsにconsole.log()を入れても表示されませんでした。代わりにjquery周りのエラーが出ます

jQueryはこの方法で用いています。

html.erb上でインラインでjqueryを使ったスクリプトは作動します。

発生している問題・エラーメッセージ

jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3819 jQuery.Deferred exception: $(...).bxSlider is not a function TypeError: $(...).bxSlider is not a function
    at HTMLDocument.<anonymous> (http://localhost:3000/assets/common.self-baf0e50fd23769d585e94bf678276fa5fab93867ae3de32f8dfbb963ceea6b5a.js?body=1:17:29)
    at mightThrow (http://localhost:3000/assets/jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3535:29)
    at process (http://localhost:3000/assets/jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3603:12) undefined
jQuery.Deferred.exceptionHook @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3819
process @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3607
setTimeout (async)
(anonymous) @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3641
fire @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3269
fireWith @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3399
fire @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3407
fire @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3269
fireWith @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3399
ready @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3879
completed @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3889
jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3601 [Violation] 'setTimeout' handler took 138ms
[Violation] Forced reflow while executing JavaScript took 126ms
on_content_end.js:54 on_content_end ==>response to loadPagePattern, href=http://localhost:3000/coupons, pattern.id=undefined
jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3828 Uncaught TypeError: $(...).bxSlider is not a function
    at HTMLDocument.<anonymous> (common.self-baf0e50fd23769d585e94bf678276fa5fab93867ae3de32f8dfbb963ceea6b5a.js?body=1:17)
    at mightThrow (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3535)
    at process (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3603)

該当のソースコード

app/assets/javascripts/application.js

//= require rails-ujs
//= require activestorage
//= require turbolinks
//= require jquery
//= require jquery_ujs
//= require_tree ../../../vendor/assets/javascripts/.
//= require_tree .
//= require cocoon

common.jsはapplication.jsと同じディレクトリに

assets/javascripts/common.js
$(document).ready(function(){

/******************************************
事前準備
*******************************************/

//タブボタンの数を取得
var tabQuantity = $('.tab__button').length;

//タブの長さとボディの長さの差分を取得
var tabExtraDistance = $('.tab').width() - $('.tabContainer').width();

/******************************************
スライダー発動


jquery.bxslider.min.jsはvendor/assets/javascripts/以下に

vendor/assets/javascripts/jquery.bxslider.min.js
/**
 * bxSlider v4.2.12
 * Copyright 2013-2015 Steven Wanderski
 * Written while drinking Belgian ales and listening to jazz
 * Licensed under MIT (http://opensource.org/licenses/MIT)
 */
!function(t){var e={mode:"horizontal",slideSelector:"",infiniteLoop:!0,hideControlOnEnd:!1,speed:500,easing:null,slideMargin:0,startSlide:0,randomStart:!1,captions:!1,ticker:!1,tickerHover:!1,adaptiveHeight:!1,adaptiveHeightSpeed:500,video:!1,us・・・
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • maisumakun

    2019/04/19 17:16

    「html.erb上でインラインでjqueryを使ったスクリプトは作動します。」とありますが、それはbxSliderも含めてでしょうか。

    キャンセル

  • joru

    2019/04/19 17:18

    bxSliderではなくて
    <h1>Ajax#index</h1>
    <p id="hoge">赤色になるよ</p>
    <script>
    $("#hoge").css("color","red")
    </script>
    を入れて確認したところに留まってます

    キャンセル

回答 1

checkベストアンサー

0

エラーの文言を読む限り、bxSliderの読み込みに失敗しているようにも見えます。

vendor/assets/javascripts以下であれば、相対参照を使わなくても//= require jquery.bxslider.minで参照できるかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/19 17:24

    変更してみたところ、いまだにエラー内容は同じままです...

    Navigated to http://localhost:3000/coupons
    application.js:18 Hello World from Webpacker
    jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3819 jQuery.Deferred exception: $(...).bxSlider is not a function TypeError: $(...).bxSlider is not a function
    at HTMLDocument.<anonymous> (http://localhost:3000/assets/common.self-baf0e50fd23769d585e94bf678276fa5fab93867ae3de32f8dfbb963ceea6b5a.js?body=1:17:29)
    at mightThrow (http://localhost:3000/assets/jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3535:29)
    at process (http://localhost:3000/assets/jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3603:12) undefined
    jQuery.Deferred.exceptionHook @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3819
    process @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3607
    setTimeout (async)
    (anonymous) @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3641
    fire @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3269
    fireWith @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3399
    fire @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3407
    fire @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3269
    fireWith @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3399
    ready @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3879
    completed @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3889
    on_content_end.js:54 on_content_end ==>response to loadPagePattern, href=http://localhost:3000/coupons, pattern.id=undefined
    jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3828 Uncaught TypeError: $(...).bxSlider is not a function
    at HTMLDocument.<anonymous> (common.self-baf0e50fd23769d585e94bf678276fa5fab93867ae3de32f8dfbb963ceea6b5a.js?body=1:17)
    at mightThrow (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3535)
    at process (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3603)

    キャンセル

  • 2019/04/19 17:39

    ハッシュ値が先程と変わっていない(書き換えた後のJavaScriptを見ていない)ようです。

    キャンセル

  • 2019/04/19 17:51

    ハッシュ値について検索して見たのですが、確認方法がわからず、ひとまず前回忘れていたrails sの再起動を行なってもう一度リクエストしました
    jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3819 jQuery.Deferred exception: $(...).bxSlider is not a function TypeError: $(...).bxSlider is not a function
    at HTMLDocument.<anonymous> (http://localhost:3000/assets/common.self-baf0e50fd23769d585e94bf678276fa5fab93867ae3de32f8dfbb963ceea6b5a.js?body=1:17:29)
    at mightThrow (http://localhost:3000/assets/jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3535:29)
    at process (http://localhost:3000/assets/jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3603:12) undefined
    jQuery.Deferred.exceptionHook @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3819
    process @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3607
    setTimeout (async)
    (anonymous) @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3641
    fire @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3269
    fireWith @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3399
    fire @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3407
    fire @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3269
    fireWith @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3399
    ready @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3879
    completed @ jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3889
    on_content_end.js:54 on_content_end ==>response to loadPagePattern, href=http://localhost:3000/coupons#, pattern.id=undefined
    jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3828 Uncaught TypeError: $(...).bxSlider is not a function
    at HTMLDocument.<anonymous> (common.self-baf0e50fd23769d585e94bf678276fa5fab93867ae3de32f8dfbb963ceea6b5a.js?body=1:17)
    at mightThrow (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3535)
    at process (jquery3.self-5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad.js?body=1:3603)

    キャンセル

  • 2019/04/19 17:53

    ハッシュ地というのは5af507e253c37e9c9dcf65064fc3f93795e6e28012780579975a4d709f4074ad
    こちらでしょうか?
    であるともう一度同じjsを見ているということですね。
    rails sの再起動以外で対応方法はありますでしょうか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る