使用jquery从变量添加html元素?

时间:2012-01-19 10:58:45

标签: javascript jquery jquery-ui jquery-plugins jquery-selectors

我正在尝试向特定div添加元素,但不使用clone(),因为我需要在每次添加时使用原始元素的新副本,主要是因为元素是可拖动的并且它们的值正在被用户更改?所以我有我的html变量,我需要采取这些元素,并将其添加到点击到另一个元素。 ?

$(document).ready(function (e) {

var $gElem = $(
    '<div class="distributionWrapper" id="element_0">' +
        '<div class="cbox cboxQuarterWidth">'  +         
            '<select id="combobox100">'+
                '<option>1</option>'+
                '<option>2</option>'+
            '</select>'+
        '</div>'+
        '<div class="help"><a href="javascript:;"></a></div>'+
        '<div class="cbox cboxEighthWidth"><span>'+
            '<select id="combobox200" name="PeriodId">'+
                '<option>1</option>'+
                '<option>2</option>'+
            '</select>'+
        '</span></div>'+
        '<div class="clear" id="clearDistribution"><a href="javascript:;"></a></div>'+
        '<div class="add" id="addDistribution"><a href="javascript:;"></a></div>'+
    '</div>'
);

    $('.mainSearch').html($gElem); // initial load of element
    $("#combobox100").combobox();
    $("#combobox200").combobox();

var counter = 1;
$('.add').live('click', function () {
    if ($('.distributionWrapper').length === 6) return;
    //var el = $('.distributionWrapper:first').clone().attr('id', 'element_' + ++counter).appendTo('.mainSearch');
    $('.mainSearch').add($gElem).attr('id', 'element_' + ++counter);
     // here on click add gElem to .mainSearch and set atribute to .distributionWrapper

});

$('.clear').live('click', function () {
    if ($('.distributionWrapper').length === 1) return;
    $(this).parents('.distributionWrapper').remove();
});

});

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

试试这个

$('.mainSearch').append($gElem);
$('.mainSearch').children('.distributionWrapper:last').attr('id', 'element_' + ++counter);

答案 1 :(得分:0)

将html作为字符串存储在javascript变量中,并在每次需要该字符串时创建一个jQuery元素。

var elemHtml = 
'<div class="distributionWrapper" id="element_0">' +
    '<div class="cbox cboxQuarterWidth">'  +         
        '<select id="combobox100">'+
            '<option>1</option>'+
            '<option>2</option>'+
        '</select>'+
    '</div>'+
    '<div class="help"><a href="javascript:;"></a></div>'+
    '<div class="cbox cboxEighthWidth"><span>'+
        '<select id="combobox200" name="PeriodId">'+
            '<option>1</option>'+
            '<option>2</option>'+
        '</select>'+
    '</span></div>'+
    '<div class="clear" id="clearDistribution"><a href="javascript:;"></a></div>'+
    '<div class="add" id="addDistribution"><a href="javascript:;"></a></div>'+
'</div>'

$(function(){
    //your initial element
    var $elem1 = $(elemHtml);
}

function someHandler(){
    //you can create fresh new elements anywhere without cloning
    var $elem2 = $(elemHtml);
}

需要删除重复的ID。但这不在您的问题范围内。