jquery克隆多个实例为什么

时间:2010-06-24 14:51:12

标签: jquery clone

希望可以帮助,尝试Jquery克隆似乎有效,但我得到“多个”克隆而不是单击克隆“压制”按钮。

例如:我想要克隆这个:

echo '<select class="hello">';
    foreach ($pageposts as $post):
    echo '<option>'.$post->post_title.'</option>';
    endforeach;
    echo '</select>';

点击此

echo '<input type="button" id="rp" value="add">';

是的,来自WordPress,是的,“hello”类来自JQuery页面

我的JQuery功能是:

$j=jQuery.noConflict();
$j(document).ready(function() {
$j('#rp').click(function(){ 
$j('.hello').clone().appendTo('#goodbye');
});
});

所以我的“整体代码snippit”看起来像这样:

echo '<select class="hello">';
foreach ($pageposts as $post):
echo '<option>'.$post->post_title.'</option>';
endforeach;
echo '</select>';
echo '<div id="goodbye"></div>';
echo '<input type="button" id="rp" value="add">';

我在第一次按下时克隆“一次”,但随后它以倍数表示,即:

1次点击给出1个克隆加1个原始 - 我想要的

2次点击提供3个克隆加1个原始 - 不是我想要的1原始加2

3次点击提供7个克隆加1个原始 - 不是我想要的1个原件加3个 等

建议请。感谢

2 个答案:

答案 0 :(得分:6)

这是因为你的选择器正在寻找一个类:

$j('.hello')

每当您克隆并将其附加到另一个元素时,您还要添加另一个.hello元素,因此您可以克隆它可以找到的每个.hello元素。

也许您应该在克隆时删除类名:

$j('.hello').clone().removeClass('hello').appendTo('#goodbye');

或者甚至可能改变它:

$j('.hello').clone().removeClass('hello').addClass('cloned_hello').appendTo('#goodbye');

你可能想要添加一个不同的类,这样你的CSS仍然可以工作,但最终这就是你获得多个克隆项目的原因。

答案 1 :(得分:1)

行为是正常的,因为你克隆了每个包含hello类的元素。

试试这个:

$j('.hello').clone().attr("class","cloned").appendTo('#goodbye');

你把你的css和.hello中的.cloned一样。

希望有所帮助:)