2009-07-30 15 views
1

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');    

我希望做至少感一點點。 :)

任何幫助,將不勝感激。

謝謝。

回答

6

使用.end()

還原最新的「破壞性」 操作,(右 破壞性操作之前)改變設置匹配 元素到以前的狀態。

+0

但可以結束()多次調用?或者我們只能鎖定一個還原級別? – Spot 2009-07-30 06:22:21

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'); 
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'); 

但是對於他們自己。 :)