我把css和javascript复制到jsfiddle中,但是我不知道在html中放什么,不管怎么说,我试图得到一个单独的图像脉冲,问题是它只被定义为一个类,我在使用它时遇到了麻烦。当我将它单独作为它自己的函数时,它可以很好地执行http://jsfiddle.net/EQs9N/,但是当我将它包装在一个不可见的函数(或其他任何名称)中时,动画就会停止触发http://jsfiddle.net/EQs9N/1/。这和我给一个类添加动画有关系吗?有没有办法把它定义为一个对象,这会有帮助吗?谢谢
发布于 2011-08-12 14:56:28
您正在声明一个函数A,但是您并没有调用该函数。
(function(){
...
})()
这将创建一个匿名函数(即您要查找的术语)并执行它。我不知道为什么在这种情况下需要包装它,$(document).ready()
应该足够了。
关于jsfiddle用法的附注:
在jsfiddle中,您可以从框架下拉列表中选择onDomReady而不是onLoad,以自动将您的javascript包装在$(document).ready()
中,从而使您的$(document).ready()
调用变得多余。选项onLoad将把它包装在$(window).load()
中
如果您选择“无包装”,那么jsfiddle将只用必要的脚本标记围绕它,然后根据所选的选项将其放在头部或正文中。
发布于 2011-08-12 14:50:38
$(document).ready(function() {
是jquery在页面完全加载后延迟任何代码执行的方式。
如果您将这部分代码包装在一个函数中,它将不再工作,并且只有在您调用该函数时才会调用该代码。这就是当你包装你的代码时它不能工作的原因。
有关$(document).ready
的良好用法,请参阅this tuto
发布于 2011-08-12 14:54:08
在your second jsfiddle中,您定义了一个函数(函数A),但并没有实际调用它。
如果您稍微更改代码并将A
传递给document.ready
(而不是传递匿名函数),您会发现它是有效的:
function A(){
if (1 == 1){
function pulsate() {
$(".image2_template").
animate({opacity: 0.1}, 1500, 'linear').
animate({opacity: 1}, 1500, 'linear', pulsate);
}
pulsate();
} else {
$('.image2_template').animate({
opacity: 0,
});
$('.text3_template').animate({
opacity: 0,
});
}
}
$(document).ready(A);
https://stackoverflow.com/questions/7041819
复制