1

这与动态 div 创建有关。我想创建一个动画,其中一个对象(鸟)从地面飞到天空(背景图像包装器 div)。鸟被用作包装器的子 div。每次单击按钮时,我都想创建具有唯一 ID 且以鸟为背景的新 div 标签,并相应地使用下面的代码来显示动画。我的代码不起作用,我找不到 jquery 和 javascript 的新错误。

另外,哪一种效率更高?为每个标签创建唯一 ID 或将它们分配为数组值?

$(document).ready(function () {
    bird_count = 0;
    $("button").click(function () {

        var bird = document.createElement('div');
        bird.setAttribute('id', "bird" + bird_count);
        wrapper.appendChild(bird);
        num_var = 0;
        while (num_var < 29) {

            $("#bird").animate({
                top: '-=5px',
                right: '-=5px',
            }, 50);
            num_var = num_var + 1;
        }
        bird_count = bird_count + 1;
    });
});
4

3 回答 3

1

也许这个例子可以帮助:

$("button").click(function () {

    var bird = document.createElement('div');
    bird.className = 'bird'; // thanks @BenjaminGruenbaum
    wrapper.appendChild(bird);

    for(var num_var = 0; num_var < 29; num_var++) {
        $(bird).animate({
            top: '-=5px',
            right: '-=5px',
        }, 50);
    }

});
于 2013-06-15T13:12:20.247 回答
1

假设您的 HTML 类似于:

<button id='makeBird'>Make a new bird!</button>
<div id='wrapper'></div>

这对您的 JS 代码是合理的。

让我们看看如何编写避免"#name"+number.

每次单击按钮时,以下内容都会创建一只鸟。它为它们添加了数字。

var button = document.getElementById("makeBird"); // get the button and wrapper elements
var wrapper = document.getElementById("wrapper");

var counter = 0; //our counter
button.onclick = function () { // when you click on the button
    var bird = document.createElement('div'); // make a new bird
    var birdNumber = counter; // assign it a counter number
    counter++; // and increase the counter
    bird.className = "bird";
    bird.onclick = function () { // when you click on it
        alert("HI, I'm bird "+birdNumber); // it tells you which bird it is
    }
    $(bird).animate({ // when we create the bird, animate it
        right: '-=400px',
    }, 10000);
    wrapper.appendChild(bird); // append our bird to the wrapper.
};

你可以在这里看到一个工作演示

PS,如果我们把我们的JS代码放在我们代码部分的底部<body>,就可以避免document.ready

这是一个jQuerified解决方案,以防万一。

这是一个包裹在循环中的 jQuerified 版本,点击时会创建 29 只鸟

于 2013-06-15T13:13:18.453 回答
0

你可以用这个

这已经存在于 jquery UI 中并生成或删除唯一的 ID,并由 jquery UI 在运行时生成

注意:- Jquery UI 是一个解决此类问题的大型库.. 所以这个答案只适用于你已经在使用jQuery UI

于 2013-06-15T13:04:28.730 回答