【问题标题】:clone a select menu using jquery?使用 jquery 克隆选择菜单?
【发布时间】:2012-08-03 22:20:09
【问题描述】:

我有一个由 jNice 插件设计的简单选择菜单

http://www.whitespace-creative.com/jquery/jNice/

我编写了一个简单的 jquery 来克隆选择菜单并删除克隆的菜单

$(function() {
  var scntDiv = $('#p_scents');
  var i = $('#p_scents p').size() + 1;

  $('#addScnt').live('click', function() {

    $('<p class="sel-a"><select name="lang[]" id="p_scnt' + i +'" class="lang"><option value="">Select Language</option><option value="slovenski">Slovenski</option></select><a id="remScnt">Remove</a></p>').appendTo('#LangForm');
    i++;
    return false;
  });
});

它工作正常,但有一个小问题它不采用相同的 CSS 格式

我尝试了很多东西,即使在阅读 CSS 文件后,我也没有发现选择菜单的类,它完全由 jNice 插件完成。

我想知道这个问题是否有解决方案

谢谢

【问题讨论】:

  • 我想知道为什么人们很难复制/粘贴正确的缩进代码...我的意思是我所做的只是在 VIM 中复制/粘贴,全选并按=。 5 秒内完成!
  • 您可能需要将插件应用到新创建的菜单(顺便说一句,这不是任何东西的克隆)。此外,.live 从 jQuery 1.7 开始已弃用
  • @MrOBrian 抱歉我没找到你?
  • 哪一部分?您正在创建的新元素只是一个新元素,您不是在克隆某些东西。如果你想克隆一些东西,请使用.clone()。当您创建要应用插件的新元素时,请像在 document.ready 函数中一样在新元素上调用插件。
  • 另外,id 是唯一的,在 DOM 中不能有多个具有相同 id 的元素。并且.size() 已弃用,您应该改用.length

标签: javascript jquery jquery-plugins jquery-selectors


【解决方案1】:

找出 jNice 插件正在创建和更改的选择菜单的类是什么:

$('<p class="sel-a"><select name="lang[]" id="p_scnt' + i +'" class="lang"><option value="">Select Language</option><option value="slovenski">Slovenski</option></select><a id="remScnt">Remove</a></p>').appendTo('#LangForm');

到:

$("#LangForm").append($(".selectmenuclass").html());

这将完全复制 jNice 创建的选择菜单。您可以保持所有其他逻辑相同。

【讨论】:

    【解决方案2】:

    我不知道你为什么要这样做,但如果你有对 select 元素的引用,你可以这样做:

    select.parentNode.replaceChild(select.cloneNode(true), select);
    

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      相关资源
      最近更新 更多