首页 > jquery选择器问题

jquery选择器问题

    <ul class="ul1">
        <li><a href="#">00000001</a></li>
        <li><a href="#">00000002</a></li>
    </ul>
    
    $(".ul1 li").mouseover(function() {
        $("a",this).css('background', 'blue');//这里$("a",this)求解释
    });

$("a",this).css('background', 'blue');
一般我是用$(this).find("a")找出li标签中的a元素,$("a",this)是什么意思,求解释,也相当于在li标签中找出a元素吗?谢谢~


见如下代码注释

 $(".ul1 li").mouseover(function() {
        $("a",this).css('background', 'blue');//这里$("a",this)求解释
        //这里是在你鼠标上移到某个li时触发的,此时$("a",this)指的便是你现在鼠标指的li下的a标签
    });

$("a",this)这里的第二个参数"this"限定查找a的范围,$("span", this) 等价于 $(this).find("a")。

jQuery(selector, [context])一种用法解释:一般情况对jquery的选择器的用法,都是做为第一个参数的用法。其实jquery()函数的这种用法还可以传递第二个参数。传递这个参数的目的是将前面选择器限定在context这个环境中。在默认情况下,即不传第二个参数,选择器从文档根部对 DOM 进行搜索($()将在当前的HTML document中查找DOM元素);如果指定了第二个参数,如一个DOM元素集或jquery对象,那就会在这个context中查找。


好吧,第一次遇到两个参数的选择器。哈哈,现在理解了。附上jquery源码

// HANDLE: $(expr, context)

        // (which is just equivalent to: $(context).find(expr)
        } else {
            return this.constructor( context ).find( selector );
        }

$(".ul1 li").find('a')


这里的this指的是当前鼠标移上去的标签,你前面写了$(".ul1 li").mouseover
所以这里的this指的是当前鼠标指向的li,而里面的a,是在当前指向的li下寻找a标签。

【热门文章】
【热门文章】