Jquery Datatables конфликтуют с прототипом

Я использую jquery datatables для загрузки таблицы. Чтобы предварить это, мне нужно загрузить прототип для приложения мини-тележки. Я помещаю свой jquery в режим без конфликтов с помощью следующего кода:

<script type="text/javascript">
    var $j = jQuery.noConflict();
    $j(document).ready(function() {
        $j('#warranty_claim').DataTable({"bFilter": true});
    });
</script>

Я получаю следующие ошибки консоли:

  (anonymous function) (index):4747
  (anonymous function) jquery-1.2.6.min_noConflict.min.js:27
  (anonymous function) jquery-1.2.6.min_noConflict.min.js:27
  jQuery.extend.each   jquery-1.2.6.min_noConflict.min.js:21
  jQuery.extend.ready  jquery-1.2.6.min_noConflict.min.js:27

Однако я знаю, что мой jquery работает, когда я выполняю этот быстрый тест:

<script type="text/javascript">
     var $j = jQuery.noConflict();
     $j(document).ready(function() {
        $j("#foo").show();
    });
</script>

Любая помощь в получении данных работы будет принята с благодарностью.

2 ответа

Решение

Существует вероятность того, что плагин datatables не был написан без конфликтов. Так что, если вам нужно использовать плагин, вы можете легко обернуть исходный код плагина в закрытие, чтобы исправить это.

(function($){
  /* Rest of plugin source here
   *
   *
   *
   *
   */
}(jQuery))

И на самом деле, глядя на исходный код datatables, похоже, что вы можете просто изменить самое внешнее замыкание

в верхней части кода

(/** @lends <global> */function( window, document, undefined ) {

становится

(/** @lends <global> */function( window, document, $, undefined ) {

а также

}(window, document));

становится

}(window, document, jQuery));

попробуйте это и посмотрите, что происходит

Убедитесь, что в используемом вами datatables.min.js отсутствует jQuery.

На многих страницах уже будет включен jQuery, и в этом случае вы не захотите включать его снова. Скачать Builder

Другие вопросы по тегам