jQuery中的动态Div

时间:2013-07-16 00:16:01

标签: jquery html

我需要为每个提交按钮创建一个唯一的div和一个唯一的名称 - 我是jQuery的新手 - 请帮帮我。

$(document).ready( function() {  
    done();
});

function done() {
    setTimeout( function() {
        updates();
        done();
    }, 200);
}

function updates() {
    $.getJSON("fetch.php", function(data) {
        $("ul").empty();
        $.each(data.result, function(){
            $("ul").append("<li>Item: "+this['item']+
               "</li><li>Price: "+this['price']+"<br />")

            $("ul").append("<div id='a'><input type='submit' 
                 style='position:relative;top:100px;'>" + "<br /></div>" )

        });

    });
}

4 个答案:

答案 0 :(得分:1)

您可以使用当前日期时间

为id生成唯一的后缀
function generateRandomSuffix() {
    return (new Date()).getMilliseconds().toString()
}

然后将其添加到您的ID

$("ul").append("<div id='a" + generateRandomSuffix() +"'><input type='submit' style='position:relative;top:100px;'>" + "<br /></div>" )

答案 1 :(得分:0)

您可以创建一个计数器,并在div id的每次迭代中,将计数器值附加到标记的相关元素。每次在最后一次使用时都要确保增加计数器。一个快速的伪代码示例:

$counter = 0;
$("ul").append("/<div id='a"+$counter+"'><input type='submit' id='submit"+($counter++)+" style...

答案 2 :(得分:0)

在您的情况下,最好使用setInterval代替setTimeout, 你可以做类似的事情:

$(document).ready(function () {
        setInterval(function () { updates() }, 200);
    });

var curid = 0;
function updates() {
    $.getJSON("fetch.php", function (data) {
        var html = '<ul>';
        $.each(data.result, function () {
            html += "<li>Item: " + this['item'] + "</li><li>Price: " + this['price'] + "<br />";
            html += "<input type='submit' style='position:relative;top:100px;'>" + "<br />";
        });
        html +='</ul>';

        curid += 1;
        var box = document.createElement("div");
        box.id = "div" + curid;
        box.className = "myclass";
        document.body.appendChild(box);
        box.innerHTML(html);
    });
}

答案 3 :(得分:0)

尝试

var counter = 0;
function updates() {
    var $ul = $('ul');
    $.getJSON("fetch.php", function(data) {
        $ul.empty();
        $.each(data.result, function(){
            counter++;

            var $li = $('<li />');
            $li.append("<li>Item: "+this['item'] + '<br />');
            $li.append("Price: "+this['price'] + '<br />');

            $('<div />', {
                id: counter
            }).append('<input type="submit" style="position:relative;top:100px;"/>').a[appendTo($li)

            $ul.append($li)

        });

    });
}