function test(obj){
//如果写成 var obj=$(obj)这个对效率有很大影响吗 会不会对dom重新选择 注意这里传的是this
obj.css("display","none");
}<div onmouseover="test(this)">start</div>

解决方案 »

  1.   

    如果obj是个对象(element),不会对dom重新选择.而且,不把HTMLElement转化成jQuery对象的话,你后面的css方法是不会起作用的.
      

  2.   


    init: function( selector, context ) {
    // Make sure that a selection was provided
    selector = selector || document; // Handle $(DOMElement)
    if ( selector.nodeType ) {
    this[0] = selector;
    this.length = 1;
    this.context = selector;
    return this;
    }参考以上代码片段,来自jQuery1.3.2.
    如果你使用string来选择元素的话,是会重新从dom选择的,如果是element,执行到这里,就会返回对象了,这个过程不会从dom中进行元素筛选.至于性能损失,当然是有了,但是这个代码的简单程度,不值得为它考虑.如果你缓存了对象,反而需要处理缓存的对象指针在闭包中的问题.我还是比较喜欢简单的代码,太多的考虑,不值得.程序不是完全靠细节运行的.
      

  3.   

    使用jquery是要转为JQUERY对象的!$(obj)
      

  4.   

    这个写法
    传的是div层的
    这个对象
    就是div onmouseover="test(this)">start</div> 对象
      

  5.   

    楼主不要理解太深了,就记住,是当前操作的对象就可以了,你可以加上class和id 你每次可以用alert($(this).attr(id))来看看到底是操作的哪个,这样你就弄清楚了