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

Posted

技术标签:

【中文标题】如何使用 jQuery 创建元素并动态选择它们【英文标题】:How to create elements and select them on the fly with jQuery 【发布时间】:2011-12-19 02:48:27 【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

.append() 实际上“粘贴” yyy insdes xxx,并返回新的 xxx。所以第二个 call_plugin 会影响新的 xxx。 【参考方案1】:

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

别忘了不要把;s 放在嵌套的appends 之后。

【讨论】:

【参考方案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

【讨论】:

这是一个艰难的决定。我认为这个答案更简单,但我无法让它发挥作用。 (也不代表错了!)+1,谢谢你的回复!

以上是关于如何使用 jQuery 创建元素并动态选择它们的主要内容,如果未能解决你的问题,请参考以下文章

如何通过jQuery选择使用javascript动态生成的innerHTML元素[重复]

jQuery 不选择具有动态 ID 的元素,如何做到这一点?

如何查找已动态创建且存在于另一个元素中的选择下拉列表的值和 ID

JQuery动态新增Dom元素,怎么用JQ选择该元素并设置其属性

如何获取jQuery中动态添加的元素

如何在 jQuery 中获取动态创建的输入的单选值