求大虾解惑,在学习一个jQuery插件时发现如下语句            slider.mousedown(function (e) {
                var d = { left: parseInt(slider.css("left")), pageX: e.pageX };
                $().mousemove(d, function(){
                   //...........
                }).mouseup(d, function(){
                   //...........
                });
            });为什么使用了$(),按照jQuery在w3cSchool帮助$()返回了空引用,1.4之后则是返回了document,于是我将$()改为$(document)或者$("*")均可正常使用。我想当然以为是为document所有元素加上了。
   于是我做实验如下:        $(document).ready(function () {
            $().click(function () {
                alert("asdf");
            })
        });     按理说点击任何document元素就可以弹出来,可是结果是失败的,改为$(document)或者$("*")就可以。
那么到底上面插件中的$()引用的是谁呢?jquery

解决方案 »

  1.   

    if ( !selector ) {
    return this;
    }$()应该和$(this)是一样的
      

  2.   

    照jQuery在w3cSchool帮助$()返回了空引用,1.4之后则是返回了document,楼主看反了吧1.4之后是空,之前才是document<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.3.2.js"></script>
    <script>
    alert($().get(0))//DOCUMNET
    </script>
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.js"></script>
    <script>
        alert($().get(0))//undefined
    </script>
      

  3.   

    $()和$(this)肯定不一样,一开始我的理解就是this,可是我在插件内将$()改为$(this)后,插件就不能正常工作的。$()改为$(document)和$("*")就可以正常工作
      

  4.   

    的确看反了thanks,那为什么要给document所有元素都加上呢,虽然在slider.mousedown内,但是这样是不是很大呢?
      

  5.   

    这个功能应该是拖拽功能吧,一把都得加到document中吧,不然,一拖动出控件范围外,代码不就失效了。