我正在扩展jquery.contentcarousel 插件,并且我已经达到了一个特定的点,我通过__prototype__
. 我缩小了代码以演示基本部分:
(function($) {
var aux = {
navigate : function(){
//...
},
}
methods = {
init : function( options ) {
return this.each(function() {
var $el = $(this);
//THIS IS THE SLIPPERY LINE:
$el.__proto__.scrollOneLeft = function() {
aux.navigate( -1, $el, $wrapper, $.extend(settings, {sliderSpeed: 10, sliderEasing: ''}), cache );
};
});
}
}
$.fn.contentcarousel = function(method) {
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.contentcarousel' );
}
};
})(jQuery);
这适用于现代浏览器,但问题是它$el.__proto__
不适用于 IE9 和 IE10(还)。我不是 jQuery Ninja,所以我想这无论如何都不是正确的解决方案。
所以我的问题是,在这种情况下,您将如何正确定义新方法?