有可能第二次在页面上显示一个html元素而不复制它吗?

时间:2011-01-07 11:43:56

标签: javascript html dom

我有一个包含多个div的隐藏表单的页面。

<form action="...">
    <div>
        <input id="menubar_open_article_bid" name="bid" onfocus="this.select();" onkeyup="do_v(); type="text">
        <a href="#"  onclick="return do_h();">
            Beitrag öffnen                              </a>
    </div>
    <div>
        <input id="menubar_open_article_cid" name="cid" onfocus="this.select();" onkeyup="do_a();" type="text">
        <a href="#" onclick="return do_y();">
            Container öffnen                                </a>
    </div>
    <div>
        <input  id="menubar_open_article_iid" name="iid" onfocus="this.select();" onkeyup="do_b();" type="text">
        <a href="#" onclick="return do_x();">
            Inhalt öffnen                               </a>
    </div>
</form>

作为第一次尝试,我使用jQuery将其中一个div复制到另一个表单,以便在那里显示(可见)。 这很好用,但现在html元素id有两次。

我不想更改该ID。所以我只能通过id“menubar_open_article_iid”来显示html元素的div才能解决我的问题。那可能吗? (虽然我从来没有听说过这样的事情)

2 个答案:

答案 0 :(得分:2)

据我所知,这是不可能的。

我认为这里的主要问题是你想要一个输入显示两次,但仍然是相同的输入。这将是有问题的,它也是糟糕的界面设计。用户可能会因在表单中有两个独立但不同的输入而感到困惑。

我建议你不要这样做。

答案 1 :(得分:2)

也许你可以利用这种方法:

我使用jQuery和jQuery元数据: http://plugins.jquery.com/project/metadata

在隐藏的表单中,不要指定任何ID。而是通过类元数据

指定您想要的ID
<form class="hide form-to-clone">
    <div>
        <input class="setId {id:'id1'}" />
    </div>
    <div>
        <input class="setId {id:'id2'}" />
    </div>
    <div>
        <input class="setId {id:'id3'}" />
    </div>
</form>

在jQuery中,克隆隐藏的表单:

var clone = $('.form-to-clone').clone();

然后,遍历克隆中的元素并设置id:

clone.find('.setId').each(function() {
   var $this = $(this);
   $this.attr('id', $this.metadata().id);
});

然后,将克隆的表单附加到页面的某个位置:

clone.show().appendTo('body');