检测jquery版本使用或生存

时间:2014-03-20 08:21:37

标签: javascript jquery

我正在编写一个插件,可以在任何我不知道jquery的确切版本并且使用.on()方法遇到一些问题的网站中使用。

要解决这个问题,我有一些像这样的简单但仍然在jQuery 1.4.2中出错。

var $myElements = $('.elements'),
    myFunction = function(e){
        console.log('here');
        e.preventDefault(); 
    }

if (typeof jQuery != 'undefined') {
    if(jQuery.fn.jquery < 1.4){
        $myElements.live('click', myFunction);
    } else {
        $(document).on('click', $myElements, myFunction);
    }
}

2 个答案:

答案 0 :(得分:2)

根据之前的回答,您也可以这样做:

;(function($) {
  if(!$.fn.on) {
    $.fn.on = $.fn.live;
  }
}(window.jQuery || window.Zepto));

然后,您可以在代码的其余部分使用on

答案 1 :(得分:0)

你应该捆绑自己的jQuery版本,以节省很多麻烦和大量冗余代码。您可以使用noConflict执行此操作,以确保您的代码和源网站的代码独立行动:

<!-- load your jQuery -->
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
var yourjQueryVersion = $.noConflict(true);
(function($) {
    // Now you can use $ just like you normally would
    // And it will only execute against jquery-1.11.0
    $(function() {
        var $myElements = $('.elements'),
            myFunction = function(e){
            console.log('here');
            e.preventDefault(); 
        }
        $(document).on('click', $myElements, myFunction); // Yay!
    });
})(yourjQueryVersion);
</script>

这意味着:

  • 您不需要为所有jQuery版本差异编写额外代码
  • 如果目标网站升级到jQuery 2.0(或类似版本),则不会破坏任何代码。
  • 源网站甚至可能正在使用CDN,因此很可能由于缓存而只能加载一个jQuery库副本。