2012-03-23 169 views
0

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

如果任何人都可以看看,这将是最受欢迎的。

编辑:

当然,我忘了链接的例子网页

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

我的是只有2幻灯片类似,但仍然只有本地服务器上。

+1

看看是什么?我们可以看到你到目前为止? – 2012-03-23 02:05:38

+1

请张贴一些相关的代码,并欢迎来到Stack Overflow。 – 2012-03-23 02:05:52

+1

我想你忘了在我们可以看到代码的地方添加一个引用。请修改您的帖子。 – 2012-03-23 02:06:08

回答

0

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

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(); 
     } 
    }); 
    }); 
}); 
+0

我一直希望在widgetkit的click处理器中保留逻辑,但我想我需要更多地了解JavaScript中的函数和对象如何工作。外部代表团/超载你提议工作正常,非常感谢! – user1287307 2012-03-23 07:02:44