问答详情
源自:3-9 jQuery的属性与样式之元素的数据存储

$.data($(this),'key1',"name");为什么这么写不行的,而是要赋值?

 $(".left").click(function(){

           //给rleft增加数据存储

            $.data($(this),'key1',"name");

            //获取数据

            var text = $.data($(this),"key1");

            $("span").text(text);

        })

为什么这么写没内容输出,而是要赋值?

div>

    <script type="text/javascript">

        $(".left").click(function(){

           var  $this = $(this);

           //给rleft增加数据存储

            $.data($this,'key1',"name");

            //获取数据

            var text = $.data($this,"key1");

            $("span").text(text);

        })

    </script>


提问者:文酱酱 2017-02-25 18:28

个回答

  • weibo_哆啦A梦有大口袋_0
    2017-03-01 16:37:33
    已采纳

     $(".left").click(function(){
               //给rleft增加数据存储
                $.data($(this),'key1',"name");
                //获取数据
                var text = $.data($(this),"key1");
                $("span").text(text);
            })

    关键字 this 总是指向调用该方法的对象

    第一个this是指.left这个节点

    第二个this是指$.data($(this),'key1',"name");

    this是不断变化的,必须用变量存储起来

  • qq_lingling_0
    2017-02-28 00:33:39

    $.data($(this), "a", "data test");这句话里的$(this)应该代表的是$,也就是jQuery,而不是 $(".left")这个元素.

    $('.right').click(function() {
       var ele = $(this);
       //通过.data方式设置数据
       $(this).data("a", "data test")
       $(this).data("b", {
           name: "慕课网"
       })
       //通过.data方式取出数据
       var reset = $(this).data("a") + "</br>" + $(this).data("b").name
       ele.find('span').append(reset)
    })

    这个里面的$(this)指的就是$('.right')这个个元素, $(this).data("a", "data test")数据也是存储在它下面的的。