0

我正在编写一个 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>
4

2 回答 2

1
    alert( $('li#mov3').data('checkit') );  // not working

这是因为您正在获取数据中的“checkit”键,但您将键设置为“testdata”:

    $this.data('testdata','this is what i need to see');

将其更改为此将起作用:

    alert( $('li#mov3').data('testdata') );
于 2012-05-28T23:05:19.370 回答
0

啊,错误是在错误的地方!我从我正在处理的插件中提取了这段代码,以显示我认为错误的地方,但真正的错误是在插件内部我正在使用 .clone() 方法和我对 .clone() 方法的错误使用犯了这个错误——它加倍了 LI 元素的 ID,所以我得到了 2 个 id="mov3" 的 LI。我没有阅读足够的文档来查看使用 .clone() 时克隆了哪些内容。谢谢大家的回答!

于 2012-05-28T23:07:05.110 回答