Как создавать элементы и выбирать их на лету с помощью jQuery

Я немного озадачен этим. Я хотел бы создать некоторые элементы (используя jQuery), вызвать функцию для этого упакованного набора и продолжить этот процесс несколько раз по цепочке. Например,

$('<div id="xxx"></div>')
  .call_plugin()
  .append('<div id="yyy"></div>')
  .call_plugin()
  .etc...
.end();

Если первый вызов плагина влияет на xxx, второй - на yyy и т. Д. Но этого не происходит; Я думаю, что call_plugin() вызывается на первом div (id=xxx) каждый раз. Есть ли обходной путь?

Заранее спасибо!

2 ответа

Решение

Снова вызовите jQuery, чтобы другие элементы выполняли определенные функции, и добавьте .append:

$('<div id="xxx"></div>')
  .call_plugin()
  .append(
     $('<div id="yyy"></div>')
     .call_plugin()
  );

Вы можете вкладывать их так же:

$('<div id="xxx"></div>')
  .call_plugin()
  .append(
     $('<div id="yyy"></div>')
     .call_plugin()
     .append(
        $('<div id="zzz"></div>')
        .call_plugin()
     )
  );

Только не забудь не ставить ;с после вложенного appends.

$('<div id="xxx"></div>')
  .call_plugin()
  .append('<div id="yyy"></div>')
  .find('#yyy') // added this. From now on the current selection is #yyy element
  .call_plugin(); // this will be called on #yyy

.end() метод (который вы используете в конце) используется для завершения текущего выбора в цепочке, если вы хотите продолжить предыдущий выбор из той же цепочки...

В вашем примере

$('<div id="xxx"></div>')
  .call_plugin()
  .append('<div id="yyy"></div>')
  .find('#yyy') // added this. From now on the current selection is #yyy element
  .call_plugin() // called on #yyy
  .end() // this returns the selection to be #xxx
  .something()//something else that will be called on #xxx
Другие вопросы по тегам