2009-04-16 88 views
4

我在使用Microsoft Explorer 6/7和jQuery「克隆」功能時遇到了一些問題。我使用jQuery的是:jQuery .clone()和Microsoft Explorer(bug?)

$(function() { 
    $('#addFields').click(function() { 
     var newCredit = $('#original').clone(); // create new set 
     newCredit.find('input').val(''); // empty input fields 
     $(this).before(newCredit); // append at the end 
     return false; 
    }); 
}); 

HTML表單是這樣的:

<div id="original"> 

    <li id="prodEnt" > 
     <label class="description" for="entity[]">Entity </label> 
     <div> 
      <input name="entity[]" class="element text medium" type="text" value="" /> 
     </div> 
    </li>  

    <li id="entFunc" > 

    <label class="description" for="element_5">Function </label> 
    <div> 
     <input name="function[]" class="element text medium" type="text" value="" /> 
    </div> 
    </li> 

    <li class="section_break_small"></li> 
</div> 

微軟瀏覽器是無法複製多個副本,而沒有風格(CSS)的新元素。

請告訴我一個IE友好的選擇!謝謝。

+0

我我的答案更新以顯示如何只選擇第一個,如果你已經改變它到一個類。希望能幫助到你。 :) – 2009-04-17 14:53:13

回答

5

您不能/不應該有<li>元素沒有父母<ul>。此外,像你一樣,你不能/不應該在<li>內有<div>元素。最後,您正在克隆的HTML中有id屬性,這將導致重複的元素具有相同的id。如果你更換外部original股利,並使其<ul>,擺脫id的屬性,並將其作爲class而不是,它應該沒問題。

就這麼說吧,it does work for me on IE7

編輯

在回答您的評論:

,只選擇第一個,這樣做(假定它有一類fields):

$('ul.fields').eq(0).clone(); 
+0

我更新了代碼,並且一切正常,但是,當我將要克隆到某個類的ul更改爲指數級時。我保留了被克隆爲一個id的ul,並且它在IE中工作,即使它不符合標準。我確信有一種方法可以將複製的UL作爲一個類,只克隆一個,但我不知道如何去做。感謝您的幫助! – superUntitled 2009-04-17 06:58:33