jQuery中的数组不起作用

时间:2012-02-03 13:10:26

标签: jquery

我在jQuery中有一个像这样的数组

var matches = [];
  jQuery(".block").each(function() {
  matches.push(this);
});

现在我想使用像这样的匹配数组

var len = jQuery(matches).length;
for (var i = 0; i < len; i++){
  function slider() {
    jQuery(matches[i]).show("slow");
    jQuery(matches[i]).animate({left:'+=730'},3000);
    jQuery(matches[i]).show("normal", slider);
  }
}

当我将数字放在I的位置时,它可以工作,但for循环不起作用。请帮我搞错误。

2 个答案:

答案 0 :(得分:3)

评论者说,你把它包裹在一个没有被召唤的功能中。此外,我测试了它,在数组周围包装jquery没有任何影响,所以这不是问题。另外,您是否有任何理由不在每个函数中执行该代码?试试这个:

jQuery(".block").each(function() {
    jQuery(this).show("slow");
    jQuery(this).animate({left:'+=730'},3000);
    jQuery(this).show("normal", slider);
});

你甚至可以把它们连在一起:

jQuery(".block").each(function() {
    jQuery(this).show("slow", function(){jQuery(this).animate({left:'+=730'},3000, function(){jQuery(this).show("normal", slider);});});
});

最后要注意的是,如果这是您使用多个不同时间的效果,您可以将效果包装在函数中并在迭代中调用它:

jQuery(".block").each(function() {
    slider(this);
});
function silder(el)
{
     jQuery(el).show("slow", function(){jQuery(el).animate({left:'+=730'},3000, function(){jQuery(el).show("normal", slider);});});
}

答案 1 :(得分:1)

试试这个......

for (var i= 0; i< matches.length; i++){
    jQuery(matches[i]).show("slow");
    jQuery(matches[i]).animate({left:'+=730'},3000);
    jQuery(matches[i]).show("normal", slider);
}

您更有可能只想用这个代替整个示例代码......

jQuery(".block").each(function() {
    jQuery(this).show("slow");
    jQuery(this).animate({left:'+=730'},3000);
    jQuery(this).show("normal", slider);
});

因此您无需声明或使用数组。显然,如果你有这样做的原因那么公平,但这似乎没必要。

虽然两个节目功能之间会有冲突。