首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果元素由$(.data)引用,而不是由$('#id_of_element')引用,则检索this()可用

如果元素由$(.data)引用,而不是由$('#id_of_element')引用,则检索this()可用
EN

Stack Overflow用户
提问于 2012-05-29 06:55:43
回答 2查看 66关注 0票数 0

我正在编写一个jQuery插件,需要将.data()添加到插件内部的元素中,并在稍后检索它。当我在一个元素上运行这个方法时,当我通过它的id引用元素时,我不能检索存储的数据,比如:

代码语言:javascript
复制
$('#name_of_the_element')

如果我使用$(this)引用元素,就可以访问数据。

我做错了什么?

下面是jQuery插件的代码和我在其中使用它的html文件的代码:

jQuery插件:

代码语言:javascript
复制
(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文件:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

发布于 2012-05-29 07:05:19

代码语言:javascript
复制
    alert( $('li#mov3').data('checkit') );  // not working

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

代码语言:javascript
复制
    $this.data('testdata','this is what i need to see');

将其更改为以下内容将会起作用:

代码语言:javascript
复制
    alert( $('li#mov3').data('testdata') );
票数 1
EN

Stack Overflow用户

发布于 2012-05-29 07:07:05

啊,错误出现在错误的位置!我从我正在工作的插件中提取了这段代码,以显示我认为错误的地方,但真正的错误是在插件内部我使用了.clone()方法,我错误地使用了.clone()方法导致了这个错误-它使LI元素的ID加倍,所以我得到了2个带有id="mov3“的LI。在使用.clone()时,我没有阅读足够的文档来了解克隆了什么东西。感谢你们的回答!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10791254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档