jQuery .clone()和Microsoft Explorer(bug?)

时间:2009-04-16 20:37:04

标签: jquery internet-explorer

我在使用Microsoft Explorer 6/7和jQuery“clone”功能时遇到了一些问题。我正在使用的jQuery是:

$(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>

Microsoft浏览器无法复制多个克隆,也不会设置(css)新元素的样式。

请告诉我IE友好的替代方案!感谢。

1 个答案:

答案 0 :(得分:5)

如果没有父<li>,您不能/不应该有<ul>个元素。此外,您不能/不应该像<div>一样拥有<li>元素。最后,您在克隆的HTML中有id个属性,这将导致重复的元素具有相同的id。如果您替换外部original div并将其设为<ul>,请删除id属性并将其设为class,它应该没问题。

所有这一切,it does work for me on IE7

修改

回应你的评论:

要仅选择第一个,请执行此操作(假设它具有fields类):

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