2016-05-01 40 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] 
       } 
      ] 
     }); 

而且在我的網頁腳本是

jQuery(document).ready(function() { 
      ActiveMedicalProblems.init(); 
     }); 

我嘗試了其他方法,但沒有運氣。

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

謝謝!

+0

當你'console.log(jQuery)'時,你會得到什麼? –

+2

沒有衝突說「不分配全球$」。有些人希望''''在[global]範圍內可用(在這種情況下,看起來像* your * code),而不是使用'(function($)..)(jQuery)''的建議方法。 [這在文檔中介紹。](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。你的代碼會稍微長一點,但它會毫不含糊。

相關問題