2011-04-06 104 views
0

这里真的很简单,我敢肯定 - 我是一个初学者,他努力将setInterval集成到我的jQuery中。我目前有这个功能,点击它们可以旋转两个图像。我希望这会自动发生(每隔几秒钟),并且似乎无法找到使用setInterval的正确方法。使用setInvernal每隔几秒调用一次查询函数?

任何人都可以指向正确的方向吗?非常感谢您的帮助。

菲利普

$(document).ready(function(){ 
$("#spinitemholder1 .sponsorFlipphil1 img").click(function() { 
      $(this).animate({ "width": "0px", "margin-left": "135px" }, 500, function() { 
       $(this).parent().hide(); 
       $(this).width(0); 
       $("#spinitemholder1 .sponsorFlipphil2 img").animate({ "width": "271px", "margin-left": "0px" }); 
       $("#spinitemholder1 .sponsorFlipphil2").show(); 
      }); 
     }); 
     $("#spinitemholder2 .sponsorFlipphil2 img").click(function() { 
      $(this).animate({ "width": "0px", "margin-left": "135px" }, 500, function() { 
       $(this).parent().hide(); 
       $(this).width(0); 
       $("#spinitemholder1 .sponsorFlipphil1 img").animate({ "width": "271px", "margin-left": "0px" }); 
       $("#spinitemholder1 .sponsorFlipphil1").show(); 
      }); 
     }); 

}); 
+1

它没有'setInterval'工作吗?因为这里有一个语法错误:''#spinitemholder .sponsorFlipphil1 img“ – 2011-04-06 09:15:33

+0

我想你在代码中留下了一段XSLT。如果对手头的问题无关紧要,可否请删除它? – 2011-04-06 09:16:50

+0

是什么问题?你为什么认为这是'setInterval'的错? – 2011-04-06 09:17:03

回答

0

试试这个:

var interval = setInterval(function() { 
    $("#spinitemholder1 .sponsorFlipphil1 img").trigger("click"); 
    $("#spinitemholder2 .sponsorFlipphil2 img").trigger("click"); 
}, 5000); 

您必须使用“触发器”。当用户点击其中一个图像时,我会建议重置间隔。一个简单的方法是:

var interval = 0; 
function startNewInterval() { 
    clearInterval(interval); // clear previous one 
    interval = setInterval(function() { // start new interval 
    $("#spinitemholder1 .sponsorFlipphil1 img").trigger("click"); 
    $("#spinitemholder2 .sponsorFlipphil2 img").trigger("click"); 
    }, 5000); 
} 

$("#spinitemholder1 .sponsorFlipphil1 img").click(function() { 
    $(this).animate({ "width": "0px", "margin-left": "135px" }, 500, function() { 
    $(this).parent().hide(); 
    $(this).width(0); 
    $("#spinitemholder1 .sponsorFlipphil2 img").animate({ "width": "271px", "margin-left": "0px" }); 
    $("#spinitemholder1 .sponsorFlipphil2").show(); 
    startNewInterval(); 
    }); 
}); 

$("#spinitemholder2 .sponsorFlipphil2 img").click(function() { 
    $(this).animate({ "width": "0px", "margin-left": "135px" }, 500, function() { 
    $(this).parent().hide(); 
    $(this).width(0); 
    $("#spinitemholder1 .sponsorFlipphil1 img").animate({ "width": "271px", "margin-left": "0px" }); 
    $("#spinitemholder1 .sponsorFlipphil1").show(); 
    startNewInterval(); 
    }); 
}); 

startNewInterval(); 
+0

非常感谢,这真的很有帮助。完美的作品。 – Philip 2011-04-06 10:07:50

0

尝试运行

setInterval(function(){ 
    $('#spinitemholder1 .sponsorFlipphil1 img, #spinitemholder2 .sponsorFlipphil2 img').click(); 
}, 2000); 

,看看它是否工作。 (只是为了测试代码,这不是做的建议的方式)

+0

嗨,这似乎并不适用于我测试 – Philip 2011-04-06 09:31:58

+0

@user后,请在您的问题中执行代码后执行此操作。如果它不起作用,那么你的原代码也不应该工作.. – 2011-04-06 09:34:58

+0

道歉,它确实工作! – Philip 2011-04-06 09:39:02

相关问题