我正在使用 jQuery 样板作为插件模式
,有关 jQuery 样板的更多信息可以在这里找到:https ://github.com/jquery-boilerplate/boilerplate/
我想将一个元素作为默认选项传递,但我无法访问它
这里是(简化的)代码:
;(function ( $, window, document, undefined ) {
/*creating the default settings*/
var pluginName = 'pluginName',
defaults = {
nextElem:$('#right')
};
console.log(defaults.nextElem); // return : Object[] , not cool
/*merging default and options, then calling init*/
function Plugin( element, options ) {
this.options = $.extend( {}, defaults, options);
this.init();
}
Plugin.prototype = {
init: function() {
/*trying to access the default nextElem */
console.log(this.options.nextElem); // return : Object[] , not cool
console.log(this._defaults.nextElem); // return : Object[] , not cool
this.options.nextElem = $('#right');
console.log(this.options.nextElem);// return : Object[div#right] , cool
}
};
$.fn[pluginName] = function ( options ) {
return this.each(function () {
if (!$.data(this, 'plugin_' + pluginName)) {
$.data(this, 'plugin_' + pluginName, new Plugin( this, options ));
}
});
}
})( jQuery, window, document );
和 HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="js/jquery1.8.3.js"></script>
<script type="text/javascript" src="js/pluginName.js"></script>
</head>
<body>
<script>
$(function(){
$('#img').PluginName();
});
</script>
<div id="img"></div>
<div id="right"></div>
</body>
</html>
为什么这两个 3console.log(this.options.nextElem)
没有返回我的 jQuery 对象?