在动态创建时追加到最后一个元素之前

时间:2013-09-06 09:06:08

标签: jquery html

     var creatediv = document.createElement("div");

    var text1 = '<input id="attribute1" type="text" placeholder="Attribute" />    
    $(creatediv).append(text1);


    var text3 = '<input id="attribute3" type="text" placeholder="Attribute" />
    $(creatediv).append(text3);


    var Label = '<label id="label1"> test </label>';
    $(Label).Insertbefore(text3);
    $(creatediv).append(Label);

使用上述方法创建div并附加文本框和标签,如上所示。我的问题是当我尝试追加Label时。

我需要在text3之前以相同的方式添加标签,并将其设为div。

我可以在text1之后添加,但我不想这样做。在上述场景中,我如何追加和插入?

当我追加它时会自动插入到最后一个。 当我只应用insert之前它没有出现在我的DOM中。 我该怎么做才能做到这一点! 感谢

3 个答案:

答案 0 :(得分:0)

你应该试试

$(label).insertBefore('#attribute3');

答案 1 :(得分:0)

首先,它应该是insertBefore() - 请注意小写i。其次,您根本不会将您创建的div附加到DOM。最后,你的代码是本机JS和jQuery的奇怪组合。试试这个:

var $div = $('<div />').appendTo('body'); 
// you can change where the div is appended above

var $text1 = $('<input />', { 
    id: 'attribute1', 
    type: 'text',
    placeholder: 'Attribute'
});
var $text3 = $('<input />', {
    id: 'attribute3',
    type: 'text'
    placeholder: 'Attribute'
});
$div.append(text1, text3);

var $label = $('<label />', {
    id: 'label1',
    text: ' test '
});
$label.insertbefore($text3);

答案 2 :(得分:0)

此行var Label = '<label id="label1"> test </label>';

之后

$(creatediv).find('#attribute1').after($(Label)); 或者

$(creatediv).find('#attribute3').before($(Label));应该做的伎俩