如何创建元素并使用jQuery动态选择它们

时间:2011-10-31 22:23:26

标签: javascript jquery jquery-chaining

我对此感到有点难过。我想创建一些元素(使用jQuery),在该包装集上调用一个函数,并通过链继续这个过程几次。例如,

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

第一次调用插件会影响xxx,第二次调用会影响yyy,依此类推。但这并没有发生;我认为每次都在第一个div(id = xxx)上调用call_plugin()。有解决方法吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

再次调用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

答案 1 :(得分:2)

$('<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