2010-06-24 88 views
2

希望可以幫助,嘗試Jquery克隆似乎工作,但我得到「多個」克隆而不是單個克隆「重製」按鈕上。jquery克隆多個實例爲什麼

如:我想克隆這樣的:

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

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

是的點擊

和Yes的 「你好」 類是從jQuery頁面

我jQuery的功能是:

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

所以我的「總體代碼片段」是這樣的:

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 不算什麼等等

建議請。由於

回答

6

這是因爲你的選擇是尋找類:

$j('.hello') 

每當你克隆和追加此爲要添加另一個.hello元素另一個元素,因此你的每一個.hello元素,它可以找到克隆。

也許你應該刪除的類名時,它被克隆:

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

或者甚至改變它:

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

您可能要添加不同的類,所以你的CSS仍然可以工作,但最終這就是爲什麼你得到多個克隆項目。

+0

謝謝ILMV - Durrrr當然我像往常一樣缺失明顯。 – user351657 2010-06-24 14:57:34

+0

再次感謝ILMV--你明顯比我更快,你把我打敗了.removeClass('hello')方面。非常感謝,問題解決了 – user351657 2010-06-24 15:00:28

+0

ILMV - 只是一個快速筆記,我接受「答案」 - 有時候我發現「答案」不是答案 - (不同於你的)不能按下按鈕幾分鐘。然而! – user351657 2010-06-24 15:02:11

1

該行爲是正常的,因爲您克隆了其中包含hello類的每個元素。

試試這個:

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

,你把你的CSS在.cloned在.hello相同。

希望它有幫助:)

+0

您不應該使用'.attr'方法來添加/編輯/刪除屬性中的類,因爲您可能會有多個類,而您的方法會覆蓋其他類。相反,使用'.addClass'和'.removeClass' :-) – 2010-06-24 15:02:01

+0

這裏只有一個類,所以它不覆蓋任何東西,但我同意它一般不是最好的! – 2010-06-24 15:03:35

+0

在某些情況下,addClass/removeClass在任何時候都不能始終如一地工作。在我的特殊情況下,將課程改爲不同的課程是最好的解決方案。特別是,創建克隆的緩存變量是產生不一致結果的原因。在jQuery中,你總是希望儘可能以絕對值工作。通過這種方法,您可以隨時在您重寫的課程中重新添加。 – 2016-04-13 20:39:21