如何解决jQuery冲突?

时间:2016-05-04 08:46:56

标签: javascript jquery ajax keyup

我有一个jQuery自定义文件,它禁用或冲突我的其他jQuery文件,请问我该如何解决这个问题。请看下面: 我的自定义文件:

$(".search").keyup(function() 
{ 
var searchid = $(this).val();
var dataString = 'search='+ searchid;
if(searchid!='')
{
    $.ajax({
    type: "POST",
    url: "search.php",
    data: dataString,
    cache: false,
    success: function(html)
    {
    $("#result").html(html).show();
    }
    });
}return false;    
});

冲突文件:

<script src="js/jquery.isotope.min.js"></script>
<script src="js/nprogress.js"></script>

如果这个问题得到解决,我会非常高兴。

2 个答案:

答案 0 :(得分:1)

我假设您知道某些jQuery存在冲突 - 您已检查过控制台错误等。

您可以将jQuery包装在一个自动执行的匿名函数中,如下所示:

(function($) { 
  $(".search").keyup(function() 
  { 
  var searchid = $(this).val();
  var dataString = 'search='+ searchid;
  if(searchid!='')
  {
    $.ajax({
    type: "POST",
    url: "search.php",
    data: dataString,
    cache: false,
    success: function(html)
       {
         $("#result").html(html).show();
       }
     });
   }return false;    
  });
})(jQuery);

编辑 - 对上面发生的事情的一些解释。为了防止与其他脚本/框架的任何潜在冲突,我们将jQuery对象作为参数传递给我们的函数(因此function($))。这样做的好处是,您现在可以随意在函数内本地使用$。不用担心与global范围内的其他脚本冲突。

答案 1 :(得分:0)

我能够通过以下方式解决问题:

$(document).ready(function() {  
//-----
});