我正在编写一个 jQuery 插件,需要添加.data()
到插件内的元素并稍后检索它。当我在一个元素上运行该方法时,当通过它的 id 引用元素时,我无法检索存储的数据,例如:
$('#name_of_the_element')
如果我使用引用元素,我可以访问数据$(this)
。
我究竟做错了什么?
这是 jQuery 插件的代码和我在其中使用它的 html 文件的代码:
jQuery插件:
(function( $ ){
var methods = {
checkit : function(options) {
return this.each(function(){
var $this = $(this);
$this.data('testdata','this is what i need to see');
});
}
}
$.fn.demoplug = function( method ) {
if ( methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.checkit.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.antigravity' );
}
};
})( jQuery );
HTML 文件:
<div role="main" id="main">
<ul id="miniatures">
<li><img src="img/thumbs/thumb-01.jpg"></li>
<li><img src="img/thumbs/thumb-02.jpg"></li>
<li id="mov3"><img src="img/thumbs/thumb-03.jpg"></li>
<li><img src="img/thumbs/thumb-04.jpg"></li>
<li><img src="img/thumbs/thumb-05.jpg"></li>
</ul>
</div>
<script src="js/libs/jquery-1.7.2.min.js"></script>
<script src="js/libs/jquery.demoplug.js"></script>
<script>
$(document).ready(function(){
$('li#mov3').demoplug('checkit');
alert( $('li#mov3').data('checkit') ); // not working
$('li#mov3').click(function(){
alert( $(this).data('testdata') ); // works
});
});
</script>