我正在编写一个插件,可以在任何我不知道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);
}
}
答案 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>
这意味着: