Как создавать элементы и выбирать их на лету с помощью jQuery - PullRequest
3 голосов
/ 01 ноября 2011

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Снова вызовите 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()
     )
  );

Простоне забудьте не ставить ; с после вложенных append с.

2 голосов
/ 01 ноября 2011
$('<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
...