【问题标题】:jQuery Clone and renaming child elementsjQuery克隆和重命名子元素
【发布时间】:2015-01-27 00:11:39
【问题描述】:

我有一个 DIV 元素,其中包含图像、一些文本、图像的 url 链接和图像状态的链接

  • 此状态由图像旁边的图标表示
  • 我使用 .on("click"..., 事件触发 phpscript 更新后台状态并返回新状态

此状态链接有一个使用 csshook 的类,这意味着图像 ID 是类名 (statusrec41) 的一部分。

使用 jQuery 克隆 DIV。

$clone =  $('#divrec41').clone(true).attr('id', '#divrec42');

然后我用新的记录 ID 更新 URL

$clone.find('[href]').each(function(){this.href=this.href.replace(/rec41/g, 'rec42')})

然后在末尾显示

$clone.appendTo('#imageArea');

我迷失的部分是如何更新类名以反映新 ID 之前我附加了克隆的元素 如果我能将所有“rec41”替换为“rec42”就好了,但是不

【问题讨论】:

  • 你不需要在 .attr() 调用中在 'divrec42' 之前加上 '#',否则下次尝试查询该元素时会感到困惑(例如 $('##divrec42'))跨度>

标签: javascript jquery find clone addclass


【解决方案1】:

你可以在一行中完成:

$clone.attr('class', your_classes).appendTo('#imageArea');

【讨论】:

  • 除非你做错了否则它不可能不做
【解决方案2】:

你能做到吗?

$(document).find('.rec41').each(function(){
    $(this).removeClass("rec41");
    $(this).addClass("rec42");
})

【讨论】:

  • 是的,因为我相信您的克隆是不可见的,除非您将其添加到 DOM,而 appendTo 可能会这样做。有问题吗?
  • 正确,我希望我能在追加之前做到这一点。我的实际课程比“rec41”复杂一点,我希望有一种方法我不必重建课程名称。我将最终使用 addClass/removeClass 阅读了很多关于 html5 data-js hooks 但不确定我喜欢那个选项
猜你喜欢
  • 2021-12-31
  • 2011-04-29
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多