代码如下:<input id="aa" type="text" value="123" />
    <script>
        //方法一
        $.fn.extend({
            test: {
                $this: this,
                test1: function () {
                    alert(this.$this.val());
                }
            }
        });
        //方法二
        $.fn.extend({
            test: function () {
                alert(this.val());
            }
        });        
        $("#aa").test.test1();
        $("#aa").test();
    </script>方法二的this指的是$("#aa")对象。
方法一的this却不是我想要的$("#aa")对象。
请问方法一中$("#aa")对象该如何表示?

解决方案 »

  1.   

    <input id="aa" type="text" value="123" />
        <script>
            //方法一
            $.fn.extend({//////////
                test1: function () {
                    return {
                        $this: this,
                        test1: function () {
                            alert(this.$this.val());
                        }
                    }
                }
            });
            //方法二
            $.fn.extend({
                test: function () {
                    alert(this.val());
                }
            });        $("#aa").test1().test1();/////////////
            $("#aa").test();
        </script>
      

  2.   

    只能用$("#aa").test().test1();这种方式吗?
    $("#aa").test.test1();这种方式没法实现吗?
      

  3.   

    是的,$("#aa").test此时为json那个object对象,调用this后就是指向json对象,而不是jquery包装后的dom对象,这个是jquery的继承机制,除非你自己重写过jquery。