Javascript匿名函数同步

时间:2012-03-23 02:04:14

标签: javascript synchronization

简单地说,我正在尝试同步在joomla网站中使用widgetkit lib创建的两个幻灯片,例如。当用户单击下一张幻灯片时,另一张幻灯片也会在slideshow.js中运行nextSlide()函数。与之前相同。我遇到的问题是widgetkit使用匿名函数来创建这些幻灯片,并且在创建它们之后我没有对它们进行全局引用。凭借我有限的编程知识,我似乎无法在点击处理程序内触发其他幻灯片的nextSlide函数。

如果有人可以看看,那将是非常受欢迎的。

编辑:

当然我忘了链接示例网页

http://www.yootheme.com/widgetkit/examples/slideshow

Mine类似,只有2个幻灯片,但仍然只在本地服务器上。

1 个答案:

答案 0 :(得分:0)

在这里简要介绍一下widgetkit是一种可能的解决方案。使用jquery,您可以搜索具有子类为next的幻灯片类的任何对象,然后单击所有其他对象。下面提供的代码未经过测试,但应指向正确的方向。只要您不调用停止传播或阻止默认,那么原始点击处理程序仍然应该触发。

var slideshow_count = $('.slides .next').length;
var cascade_countdown = 0;

$('.slides .next').each(function() {
  $(this).click(function() {

    // stop an infinite loop if we're already cascading till we've done it for all the elements.
    if(cascade_countdown != 0) {
     cascade_countdown--;
     return true;
    }

    // we don't include the slideshow we're clicking in this count
    cascade_countdown = slideshow_count - 1;
    var clicked_el = this;

    $('.slides .next').each(function() {
      // only click elements that aren't the initiator
      if(this !== clicked_el) {
        $(this).click();
      }
    });
  });
});