JS / jQuery冲突

时间:2018-04-24 23:32:34

标签: javascript jquery html

我正在开发一个“排行榜”系统,我有2个jQuery脚本似乎彼此冲突。我没有写它们我有一个老伙伴为我写了这些,我对js / jQuery不太熟悉。

这是一个搜索栏脚本,其中一个冲突:

$(document).ready(function() {

  $(".search").keyup(function () {
    var searchTerm = $(".search").val();
    var listItem = $('.results tbody').children('tr');
    var searchSplit = searchTerm.replace(/ /g, "'):containsi('")
    
  $.extend($.expr[':'], {'containsi': function(elem, i, match, array){
        return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
    }
  });
    
  $(".results tbody tr").not(":containsi('" + searchSplit + "')").each(function(e){
    $(this).attr('visible','false');
  });

  $(".results tbody tr:containsi('" + searchSplit + "')").each(function(e){
    $(this).attr('visible','true');
  });

  var jobCount = $('.results tbody tr[visible="true"]').length;
    $('.counter').text(jobCount + ' item');

  if(jobCount == '0') {$('.no-result').show();}
    else {$('.no-result').hide();}
		  });
});

这是另一个与搜索栏脚本冲突的脚本,这个脚本用于分页:

  jQuery(document).ready(function($){

    $('.table tbody').paginathing({
      perPage: 25,
      limitPagination: 5,
      insertAfter: '.table',
      pageNumbers: true
    });
  });

我想要完成的是如何合并它们或使它们在一起如何协同工作。

1 个答案:

答案 0 :(得分:0)

您可以尝试将第一个脚本放在第二个脚本的相同模式中。 两个脚本都使用jquery,但第二个脚本准备避免与其他库冲突。 查看此文章了解更多详细信息: https://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

更新:

使用第二个脚本的第一行更新您发布的第一个脚本的第一行。像这样:

jQuery(document).ready(function($){
  $(".search").keyup(function () {
    var searchTerm = $(".search").val();
    var listItem = $('.results tbody').children('tr');
    var searchSplit = searchTerm.replace(/ /g, "'):containsi('")

  $.extend($.expr[':'], {'containsi': function(elem, i, match, array){
        return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
    }
  });

  $(".results tbody tr").not(":containsi('" + searchSplit + "')").each(function(e){
    $(this).attr('visible','false');
  });

  $(".results tbody tr:containsi('" + searchSplit + "')").each(function(e){
    $(this).attr('visible','true');
  });

  var jobCount = $('.results tbody tr[visible="true"]').length;
    $('.counter').text(jobCount + ' item');

  if(jobCount == '0') {$('.no-result').show();}
    else {$('.no-result').hide();}
          });
});

更新2

似乎你在页面上加载了两次bootstrap,第一个在jquery之前声明了。这就是错误发生的原因。

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>

我认为你可以摆脱3.3.5版本,然后在引导程序3.3.7之前放入jquery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>