jQuery Chain Jumping? - PullRequest
       17

jQuery Chain Jumping?

1 голос
/ 30 июля 2009

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 ]

6 голосов
/ 30 июля 2009

использовать .end ()

Возврат самых последних «разрушительных» операция, изменение набора совпадающих элементы в своем предыдущем состоянии (справа до разрушительной операции).

2 голосов
/ 30 июля 2009

Вы можете использовать:

$('#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 голос
/ 30 июля 2009

Вы можете использовать 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');

Но каждому свое. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...