jQuery end()问题

时间:2012-02-29 12:39:14

标签: jquery

$licensetable
            .attr({
                'data-productkey': heritageProduct.genericProductKey,
                'data-internalid': heritageProduct.internalID
            }).find('.productname').text(heritageProduct.productName).siblings('.deletesystem').remove();

        $licensetable.find(':input').not(':button').prop('disabled', true);

为什么只有上面的代码会禁用$licensetable中的输入字段?下面的代码不应该相同吗?

$licensetable
            .attr({
                'data-productkey': heritageProduct.genericProductKey,
                'data-internalid': heritageProduct.internalID
            }).find('.productname').text(heritageProduct.productName).siblings('.deletesystem').remove().end().find(':input').not(':button').prop('disabled', true);

2 个答案:

答案 0 :(得分:1)

来自jQuery end documentation

  

描述:结束当前链中最近的过滤操作,并将匹配元素集返回到先前的状态。

所以,不,在你的end()之后,它会引用$(.productname)。试试end().end()(或重构!)。

答案 1 :(得分:1)

您需要另一个.end()

$licensetable
    .attr({
        'data-productkey': heritageProduct.genericProductKey,
        'data-internalid': heritageProduct.internalID
    })
    .find('.productname').text(heritageProduct.productName)
    .siblings('.deletesystem').remove()
    .end()
    .end()
    .find(':input').not(':button').prop('disabled', true);

.end()的文档:http://api.jquery.com/end

第一个.end()会让您回到$licensetable.find('.productname'),第二个会让您回到$licensetable