appendTo无法处理jquery中的每个
appendTo is not working with each in jquery
我必须在每个"div"上应用动画。但它只适用于第一个,而不是全部。根据我的说法,"$("#viewport").each(appendTo(c));"这一行在javascript代码中不起作用。
HTML代码:
<div id="viewport"></div>
<div id="viewport"></div>
<div id="viewport"></div>
Javascript代码:
$(window).load(function(){
$(function () {
var a = 0;
for (; a < 15; a += 1) {
setTimeout(function b() {
var a = Math.random() * 1e3 + 5e3,
c = $("<div />", {
"class": "smoke",
css: {
opacity: 0,
left: Math.random() * 200 + 80
}
});
**$("#viewport").each(appendTo(c));**
$.when($(c).animate({
opacity: 1
}, {
duration: a / 4,
easing: "linear",
queue: false,
complete: function () {
$(c).animate({
opacity: 0
}, {
duration: a / 3,
easing: "linear",
queue: false
})
}
}), $(c).animate({
bottom: $("#viewport").height()
}, {
duration: a,
easing: "linear",
queue: false
})).then(function () {
$(c).remove();
b()
});
}, Math.random() * 3e3)
}
}());
});
使用多个具有相同id的元素绝对是不好的做法!将"vieport"作为类并使用
$( ".viewport" )
.each()函数将函数作为第一个参数,在该函数上下文中,"this"变量将包含元素
$( ".viewport" ).each( function() {
$( this ).appendTo( c );
});
如果我没有错。你想要这样的东西:
HTML:
<div id="viewport">
<div class="smoke smoke1"></div>
<div class="smoke smoke2"></div>
<div class="smoke smoke3"></div>
</div>
JS:
(function () {
"use strict";
$('#viewport .smoke').each(function ns () {
var initialTop = $(this).position().top;
$(this).animate({
top: - $(this).height()
}, Math.random() * 2000 + 2000, function () {
$(this).css({
top: initialTop,
opacity: 0
});
}).animate({
opacity: 1
}, ns)
});
}());
CSS:
#viewport {
position: relative;
width: 400px;
height: 300px;
margin: 100px auto;
border: 1px solid #333333;
overflow: hidden;
}
#viewport .smoke {
position: absolute;
width: 20px;
height: 40px;
background: rgba(0, 0, 0, 0.5);
}
#viewport .smoke1 {
left: 140px;
top: 260px;
}
#viewport .smoke2 {
left: 180px;
top: 260px;
}
#viewport .smoke3 {
left: 220px;
top: 260px;
}
请在此处查看演示:http://jsfiddle.net/1rf31eyL/
您可以在此处查看另一个示例演示:http://gettycreations.com/
首先是
在$.每个中添加函数
像
"$("#viewport").each(
function(){
$(this).appendTo(c);
}
);
然后试试这个,
$("[id=viewport]")
当你使用
$("#viewport")
它只选择具有给定ID的第一个元素。
然而,当您按属性(例如,您的案例中的id)进行选择时,它会返回所有匹配的元素,比如:
$("[id=viewport]")
相关文章:
- 如何使用jquery处理php循环通过元素
- HTML5拖放;Drop-使用jQuery处理事件
- 在谷歌应用引擎上用jQuery处理json表单
- Jquery处理提交按钮's单击事件而不中断表单发布
- Javascript/JQuery处理并发/异步调用和数据竞争
- 为什么hover()不能使用jquery处理添加的类
- 使用Jquery处理大量点击事件的更好解决方案
- Jquery处理ID中的特殊字符
- 如何使用JQuery处理zip文件的强制下载
- 调用传递给JQuery处理程序的函数
- 如何使用Javascript或Jquery处理HTML中的图像
- Flexslider 无法使用 Jquery 处理自动生成的内容
- JQuery 处理事件,但不执行函数
- 使用 JS 和 JQuery 处理表单输入
- 将 asp:imagebutton 替换为使用 jquery 处理图像
- 使用jQuery,如何触发由另一个版本的jQuery处理的事件
- 使用 jquery 处理 CSV
- jQuery:处理混合的html/js ajax响应
- 使用 jQuery 处理表单
- jQuery 处理多个输入