Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测jquery版本在或实时使用_Javascript_Jquery - Fatal编程技术网

Javascript 检测jquery版本在或实时使用

Javascript 检测jquery版本在或实时使用,javascript,jquery,Javascript,Jquery,我正在写一个插件,它可以在我不知道jquery确切版本的任何网站上使用,并且在()上的.on()方法中遇到了一些问题 为了解决这个问题,我做了一些类似这样的简单工作,但jQuery1.4.2中仍然会出现错误 var $myElements = $('.elements'), myFunction = function(e){ console.log('here'); e.preventDefault(); } if (typeof jQuery

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

为了解决这个问题,我做了一些类似这样的简单工作,但jQuery1.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);
    }
}
var$myElements=$('.elements'),
myFunction=函数(e){
console.log('here');
e、 预防默认值();
}
if(jQuery的类型!=“未定义”){
if(jQuery.fn.jQuery<1.4){
$myElements.live('click',myFunction);
}否则{
$(文档).on('click',$myElements,myFunction);
}
}

根据前面的答案,您也可以这样做:

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

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

您应该捆绑自己的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>

var yourjQueryVersion=$.noConflict(true);
(函数($){
//现在你可以像平常一样使用$
//它将只对jquery-1.11.0执行
$(函数(){
var$myElements=$('.elements'),
myFunction=函数(e){
console.log('here');
e、 预防默认值();
}
$(文档).on('click',$myElements,myFunction);//耶!
});
})(yourjQueryVersion);
这意味着:

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

您不应该尝试适应所有版本的jQuery。如果他们用的是Zepto呢?捆绑您自己的版本和名称空间,这样就可以保证您的功能。更流畅的答案。我将删除我的:)。live的语法与
上的不同。因此,如果我传递了一个事件委派参数,这将失败。这种方法的数百条警告中的一条是行不通的。如果上的
不可用,您可以尝试始终选择
$(文档)
。@RGraham是的,您是对的。忽略我的回答。使用此处提到的技术之一: