jQuery链跳跃?

时间:2009-07-30 06:12:59

标签: jquery

jQuery几乎是一个跨越引擎的大选择器,上面挂着有用的东西。凭借所有这些力量,我无法相信没有办法绕过链条。因此,我假设我对实现这一点的方式一无所知。

我希望能够分叉链以进行修改,然后返回到根链。

示例:

$('#clone-container')
    .clone()
    .find('#clone-topic')         // fork
        .attr('id', 'new-topic')
                                  // return to root chain (how?)
    .find('#clone-body')          // fork
        .attr('id', 'new-body')
    .attr('id', 'new-container')  // return to root chain (how?)
    .append('body');              

我希望这至少有点意义。 :)

任何帮助都将不胜感激。

感谢。

3 个答案:

答案 0 :(得分:6)

使用.end()

  

还原最近的'破坏性'   操作,改变匹配的集合   元素到以前的状态(右边   在破坏性操作之前)。

答案 1 :(得分:2)

您可以使用:

$('#clone-container')
.clone()
.find('#clone-topic')         // fork
    .attr('id', 'new-topic')
    .end()  // return to root chain
.find('#clone-body')          // fork
    .attr('id', 'new-body')
.attr('id', 'new-container')
.end()  // return to root chain
.append('body');

答案 2 :(得分:1)

你可以使用end(),但我认为这会把整个链条推得太过分了......

我认为这是做你想做的最可读的方式:

var $c = $('#clone-container').clone();
$('#clone-topic', $c).attr('id', 'new-topic');
$('#clone-body', $c).attr('id', 'new-body');
$c.attr('id', 'new-container').append('body');
但对每个人来说都是如此。 :)