问答详情
源自:6-5 jQuery遍历之closest()方法

closest()方法

$("button:last").click(function() {
        var itemB = $('.item-b')
        $('li.item-1')
            .closest(itemB)
            .css('border', '1px solid blue');
    })

$('li.item-1') .parents('.item-b').css('border', '1px solid blue')这是正确的为什么parents(itemB)就不行变成全选了,只有closest才有这种传参方式?

$("button:last").click(function() {
        var itemB = $('.item-b')
        $('li.item-1')
            .parents(itemB)
            .css('border', '1px solid blue');
    })


提问者:啊啊啊啊123 2016-09-02 10:22

个回答

  • 孩纸╭别伤xin、了
    2016-09-06 17:56:18
    已采纳

    parents()是无参数的,但是允许传一个选择器的表达式。itemB是参数,'.item-b'是一个字符串,是一个表达式,是这个方法封装者设置的,被允许的参数。这里说的无参数,应该是指不能传入变量,且只能传入“选择器表达式”,其他的都不行。

  • 码农吊车尾
    2016-10-11 15:57:09

    代码:$('li.item-1') .parents('.item-b').css('border', '1px solid blue');
    意思是:从$('li.item-1')的parents集合中取出class名为item-b的元素(从当前集合筛选)

    再看看选择性接受同一类型选择器表达式的解释:

    parents()方法选择性地接受同一型选择器表达式

    同样的也是因为jQuery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个选择器的表达式; 



  • brogii
    2016-09-02 11:31:20

    parents 是全遍历之后挑选相符合的

    closest 是向上层遍历之后 遇到符合的就停止遍历