Javascript 检测jquery版本在或实时使用
我正在写一个插件,它可以在我不知道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
.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是的,您是对的。忽略我的回答。使用此处提到的技术之一: