2016-05-01 13 views
-1

ダッシュボードのUIを実行していて、非常に多くのJsコンポーネントが組み込まれています。以前は正常に動作していました(主にデータテーブル)、今ではいくつかのフォームコンポーネントのスイッチとチェックボックスを行っています。私はタイプエラーを取得しています - jQueryは矛盾のない関数ではありません。

私はStackOverflowに投稿されたすべての提案を試みましたが、解決方法はありませんし、競合を使用している間は同じ問題が発生しています。

現在の問題にされた私のデータテーブルが動作していない...

Click Here for the test Page

TypeError: $ is not a function 
var oTable = $('#ActiveMedicalProblems').dataTable({ 

スクリプトが私のデータテーブル

var oTable = $('#ActiveMedicalProblems').dataTable({ 
      "aLengthMenu": [ 
       [5, 15, 20, -1], 
       [5, 15, 20, "All"] // change per page values here 
      ], 
      // set the initial value 
      "iDisplayLength": 5, 
      "sDom": "<'row'<'col-lg-6'l><'col-lg-6'f>r>t<'row'<'col-lg-6'i><'col-lg-6'p>>", 
      "sPaginationType": "bootstrap", 
      "oLanguage": { 
       "sLengthMenu": "_MENU_ records per page", 
       "oPaginate": { 
        "sPrevious": "Prev", 
        "sNext": "Next" 
       } 
      }, 
      "aoColumnDefs": [{ 
        'bSortable': false, 
        'aTargets': [0] 
       } 
      ] 
     }); 

であると私のページ内のスクリプトは

です

私は他の方法で試しましたが運はありません。

(function($){ 
    ActiveMedicalProblems.init(); 
}); 

ありがとうございます!

+0

'console.log(jQuery)'のときはどうなっていますか? –

+2

"グローバル$を割り当てないでください"という矛盾はありません。 '(function($)..)(jQuery)'の推奨アプローチを使用する代わりに、[global]スコープ(この場合は* your *コードのように見えます)で '$'が利用できると期待していました。 [これはドキュメントに記載されています](https://api.jquery.com/jquery.noconflict/) – user2864740

+0

これは問題ではありませんが、jQuery v1.10.2を使用しているようです。これはかなり古いバージョンのライブラリです。最新のバージョンにアップグレードすることを検討してください。そうしないと、ほこりや新しいプラグインが予期したとおりに動作しない可能性があります。現在の* stable *リリースは2.2.3です:https://jquery.com/download/ – Marcus

答えて

2

noConflictコールを切断します。これは短期的な解決策であり、すべてのコードを再び機能させます。

また、このように、「データテーブル」のコード(ではないの呼び出し)をラップ:

(function($) { 
var oTable = $('#ActiveMedicalProblems').dataTable({ 
... 
})(jQuery); 

しかし、あなたはその後、グローバル名を定義することができません。おそらく、単に$のすべてのインスタンスをjQueryに置き換えるほうが簡単でしょう。あなたのコードはもう少し長くなるでしょうが、それはあいまいではありません。

関連する問題