2011-08-19 47 views
1

我有一个幻灯片插件,工作正常。单独...如何杀死/重置正在运行的jquery插件?

我在一页上有3个不同的按钮。他们都调用相同的jQuery幻灯片插件,并将不同图像的幻灯片加载到同一个divider中(id =“slideshow”)

我删除幻灯片并从#slideshow中的元素每次加载新幻灯片与新的图像。

这一切都会正常工作,除了我点击按钮的次数越多,整个事情就会变得越糟糕,因为插件每次都打开,插件会混淆显示哪些图像。

我的问题是。我怎样才能完全杀死一个正在运行的插件,以便新插件可以从头开始加载。我试过empty(),die(),remove(),detach()API,但没有成功。

有没有其他办法?

谢谢。

http://muttley.freewebspace.com/slideshow/

+0

这完全取决于插件的实现。您还应该调查在删除*插件后留下哪些遗留物。 –

回答

0

这一切都取决于该插件。此插件是否支持页面上的多个幻灯片?如果是这样,而不是删除#slideshow的内容,也许它会工作,你会用一个新的元素替代#slideshow本身。

3

不幸的是,如果插件本身不支持它,那么在元素上销毁插件是不常见的。您可能需要删除实际称为插件的元素,然后再次创建它:

var oldDiv = $('#slideshow'); 
var parent = oldDiv.parent(); 
oldDiv.remove(); 
parent.append($('<div>').attr('id', 'slideshow')); 
// Initialize slideshow here again 

// Untested but shorter way: 
$('#slideshow').replaceWith($('<div>').attr('id', 'slideshow')); 
+0

谢谢你的回复。与此同时,我设法让它可以看到我在说什么。 http://muttley.freewebspace.com/slideshow/ – muttley29

+0

我不能使用这个,因为我从另一个文件加载图像列表在div id =“slideshow”。如果你检查这个网站和来源muttley.freewebspace.com/slideshow可以看到我在说什么。我发现了一个奇怪的解决方案。我想如果我暂停幻灯片之前,我击中另一个幻灯片按钮,它工作正常。你认为有可能以某种方式从插件调用stopAutoplay()? – muttley29