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元素吗?谢谢~

阅读 3.4k
5 个回答

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

// HANDLE: $(expr, context)

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

见如下代码注释

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题