使用;这";在.next()调用后的jquery中
我正在做一个简单的滚动图像循环,第一个图像在屏幕上很好地滚动,但是没有任何后续内容,我是否错误地使用了“this”? 代码: HTML:使用;这";在.next()调用后的jquery中,jquery,Jquery,我正在做一个简单的滚动图像循环,第一个图像在屏幕上很好地滚动,但是没有任何后续内容,我是否错误地使用了“this”? 代码: HTML: <div id="pictureFrame"> <img class="slideshow" src="img1.jpg"> <img class="slideshow" src="img2.jpg"> <img class="slideshow" src="img3.jpg"&g
<div id="pictureFrame">
<img class="slideshow" src="img1.jpg">
<img class="slideshow" src="img2.jpg">
<img class="slideshow" src="img3.jpg">
<img class="slideshow" src="img4.jpg">
</div>
我认为这样的东西更接近你想要的:
window.onload = function() {
startSlideshow($('#pictureFrame > img:first'))
};
function startSlideshow(myobj) {
myobj.animate({left: "-=" + (width + 2000)},{
duration: 30000,
queue: false,
easing: 'linear',
complete: function() {
$(myobj).css('left', '100%')
}
});
var next = myobj.next();
if (!next.length) {
next = myobj.siblings().first();
}
time = ($(this).width()* 10)/(width + 2000);
setTimeout(function() {
startSlideshow(next)
}, time);
}
每次调用
startSlideshow
都会转到DIV中的下一个图像。当它用完时,会返回到第一个图像。我认为这样的调用更接近您想要的:
window.onload = function() {
startSlideshow($('#pictureFrame > img:first'))
};
function startSlideshow(myobj) {
myobj.animate({left: "-=" + (width + 2000)},{
duration: 30000,
queue: false,
easing: 'linear',
complete: function() {
$(myobj).css('left', '100%')
}
});
var next = myobj.next();
if (!next.length) {
next = myobj.siblings().first();
}
time = ($(this).width()* 10)/(width + 2000);
setTimeout(function() {
startSlideshow(next)
}, time);
}
每次调用
startSlideshow
都会转到DIV中的下一个图像。当它用完时,会返回到第一个图像。我认为这样的调用更接近您想要的:
window.onload = function() {
startSlideshow($('#pictureFrame > img:first'))
};
function startSlideshow(myobj) {
myobj.animate({left: "-=" + (width + 2000)},{
duration: 30000,
queue: false,
easing: 'linear',
complete: function() {
$(myobj).css('left', '100%')
}
});
var next = myobj.next();
if (!next.length) {
next = myobj.siblings().first();
}
time = ($(this).width()* 10)/(width + 2000);
setTimeout(function() {
startSlideshow(next)
}, time);
}
每次调用
startSlideshow
都会转到DIV中的下一个图像。当它用完时,会返回到第一个图像。我认为这样的调用更接近您想要的:
window.onload = function() {
startSlideshow($('#pictureFrame > img:first'))
};
function startSlideshow(myobj) {
myobj.animate({left: "-=" + (width + 2000)},{
duration: 30000,
queue: false,
easing: 'linear',
complete: function() {
$(myobj).css('left', '100%')
}
});
var next = myobj.next();
if (!next.length) {
next = myobj.siblings().first();
}
time = ($(this).width()* 10)/(width + 2000);
setTimeout(function() {
startSlideshow(next)
}, time);
}
每次调用
startSlideshow
都会转到DIV中的下一个图像。当调用用完时,它会返回到第一个图像。如果使用:startSlideshow($('#pictureFrame>img:first'))
???在您的代码中,$(myobj)
是所有图像,而不仅仅是一个。您需要为超时代理上下文。顺便说一句,您的超时语法在这里是错误的startSlideshow
将window
作为它的this
对象。这可能不是您想要的。我的印象是。next仅在对包含多个同级的对象调用时有效。错了吗?.next()搜索下一个兄弟姐妹。如果没有,例如最后一张图像,则返回空对象。但是你的代码中有很多错误。使用您的控制台进行调试,并查看您得到的结果与您期望的结果进行比较只有在您将某个对象作为方法调用时,此
才会被绑定。如果要重用下一步返回的对象,只需将其保存在变量中。A.Wolff是对的,您应该在单个图像上调用next
,以了解您想要做的事情。如果您使用:startSlideshow($(“#pictureFrame>img:first”)
???在您的代码中,$(myobj)
是所有图像,而不仅仅是一个。您需要为超时代理上下文。顺便说一句,您的超时语法在这里是错误的startSlideshow
将window
作为它的this
对象。这可能不是您想要的。我的印象是。next仅在对包含多个同级的对象调用时有效。错了吗?.next()搜索下一个兄弟姐妹。如果没有,例如最后一张图像,则返回空对象。但是你的代码中有很多错误。使用您的控制台进行调试,并查看您得到的结果与您期望的结果进行比较只有在您将某个对象作为方法调用时,此
才会被绑定。如果要重用下一步返回的对象,只需将其保存在变量中。A.Wolff是对的,您应该在单个图像上调用next
,以了解您想要做的事情。如果您使用:startSlideshow($(“#pictureFrame>img:first”)
???在您的代码中,$(myobj)
是所有图像,而不仅仅是一个。您需要为超时代理上下文。顺便说一句,您的超时语法在这里是错误的startSlideshow
将window
作为它的this
对象。这可能不是您想要的。我的印象是。next仅在对包含多个同级的对象调用时有效。错了吗?.next()搜索下一个兄弟姐妹。如果没有,例如最后一张图像,则返回空对象。但是你的代码中有很多错误。使用您的控制台进行调试,并查看您得到的结果与您期望的结果进行比较只有在您将某个对象作为方法调用时,此
才会被绑定。如果要重用下一步返回的对象,只需将其保存在变量中。A.Wolff是对的,您应该在单个图像上调用next
,以了解您想要做的事情。如果您使用:startSlideshow($(“#pictureFrame>img:first”)
???在您的代码中,$(myobj)
是所有图像,而不仅仅是一个。您需要为超时代理上下文。顺便说一句,您的超时语法在这里是错误的startSlideshow
将window
作为它的this
对象。这可能不是您想要的。我的印象是。next仅在对包含多个同级的对象调用时有效。错了吗?.next()搜索下一个兄弟姐妹。如果没有,例如最后一张图像,则返回空对象。但是你的代码中有很多错误。使用您的控制台进行调试,并查看您得到的结果与您期望的结果进行比较只有在您将某个对象作为方法调用时,此
才会被绑定。如果要重用下一步返回的对象,只需将其保存在变量中。A.Wolff是对的,您应该在单个图像上调用next
,以获取您想要执行的操作。由于某些原因,这不会循环第二次,并且setTimeout()
也不会起作用。即使我使用像5这样的整数而不是time
,图像也会同时开始移动;但是,循环只播放一次。如果在再次调用动画之前没有调用来自第一个动画的回调,是否会使回调无效并再次跳到动画?我对jQuery动画不太熟悉,因此我不知道如果同时尝试两次为同一元素设置动画会发生什么。似乎应该是某种冲突。出于某种原因,这不会再次循环,并且setTimeout()
不会工作。即使我使用像5这样的整数而不是time
,图像也会同时开始移动;但是,循环只播放一次。如果在再次调用动画之前没有调用来自第一个动画的回调,那么会使回调无效并再次跳到动画吗?我对jQuery动画不是很熟悉,所以我不知道