自己总结的jQuery点滴以及各种jQuery古怪问题

  • 版本:1.3.1 width()函数取隐藏元素的css width属性,返回的值是0。
  • 对jQuery对象集合的操作,会自动轮询到每个子对象上,这和操作【DOM对象集合】操作时不同的地方。
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
    <div>/*测试对“DOM对象集合”和“jQuery对象集合”的操作*/</div>
    <button>1</button><button>2</button><button>3</button><button>4</button><button>5</button>
    <script>

    var oList=document.getElementsByTagName("button");
    //无效
    oList.innerHTML="";
    //无效,不会自动给每个子对象绑定事件
    oList.onclick=function(){alert(this.innerText)};
    //制定为某子对象后,才有效
    oList[0].onclick=function(){alert(this.innerText)};
    //测试addEvents
    /**/

    $(
    function(){
        
    //jquery对象集合 会自动给每个子对象 绑定事件
        //有效
        //$('button').html('test');
        //有效
        //$('button').click(function(){alert(this.innerText)});
        //使用each也有效,效果等于上面那句
        $('button').each(function(){
            $(
    this).click(function(){alert(this.innerText)});
        });
    });
    </script>
  • 自版本1.2.6起,.getJSON支持JSONP(有条件的跨域解决方案,需要服务器端配合)
  • 自版本1.2.6起,.getScript支持跨域
  • 1.3.1版的.getScript并非能总是执行引用的.js(待进一步研究),最好在回调函数里面用eval()执行一下
  • 创建一个 <input> 元素必须同时设定 type 属性。因为微软规定 <input> 元素的 type 只能写一次。

    // 在 IE 中无效:
    $("<input>").attr("type""checkbox");
    // 在 IE 中有效:
    $("<input type='checkbox'>");
  • jQuery一个古老的问题:通过html()、append()等方法动态插入的dom,无法立即通过$()选择器取到……IE下总是可以,Firefox下经常失灵,偶尔可以取到,估计是“即便做了window.onload判断,firefox的高速缓存仍然会导致js可以先于dom重构完成之前运行(这个说法源自jQuery之父John Resig的《精通Javascript》)”。比如:
    Code
  • 1.3.2 jQuery。从源代码来看remove()是会删除DOM上所绑定的事件的。但是不能删除通过live委派(委托)的事件。所以慎用live
posted @ 2009-02-26 13:51  Kai.Ma  阅读(1691)  评论(1编辑  收藏  举报