我有一个引用复杂对象的javascript变量(它是幻灯片控件,但这并不重要)
e.g.
var slideshow = new SlideShow();
因为我在页面上有多个幻灯片,我想在不同的页面中访问某些操作通用/重用代码。
我想要在相同的JAVASCRIPT常规中访问包含不同幻灯片实例的不同变量。使用的变量不同取决于当时控制的幻灯片。
所以而不是
slideshow.playSlides();
做类似
的事情[dynamically get reference to variable containing slideshow].playSlides();
我之前在JavaScript中看过这个并没有找到解决方案,我想知道这是否可以在JQUERY中以某种方式完成?
答案 0 :(得分:1)
嗯......某些东西必须包含变量,所以这是你需要首先回答的问题。我的想法是将它存储在一个哈希中,起初可能看起来与你不一样:
var slideshows = {};
slideshows['someslideshowName'] = new SlideShow();
但现在你可以通过名字引用而没有任何问题。
或者看起来像......
window.slideshows = {};
var slideShowName = 'someSlideShowName';
window.slideshows[slideShowName] = new SlideShow();
答案 1 :(得分:1)
如果我理解了这个问题,为什么不创建一个幻灯片阵列并对其进行枚举,这样你就可以有0到N个幻灯片,而不需要重新编码。
var slideshows = [new SlideShow()];
function playSlides() {
for(var i=0; i < slideshows.length; i++) {
slideshows[i].playSlides();
}
}
答案 2 :(得分:1)
我将添加一个完全不同的解决方案,我认为它更有意义:
正如我所说,某事必须包含变量
如果它是由浏览器呈现的控件。我会将实例挂起代表控件的元素。理想情况下,您要为元素分配某种类。所以,之后它非常简单。
$('.theslideshowclass').each(function() {
this.slideshow = new SlideShow();
});
这是一个jQuery风格的解决方案。我很失望,我第一次没那样做。
答案 3 :(得分:0)
如果它是全局变量,您可以使用window
对象:
var name = 'slideshow';
window[name].playSlides();
通常这种事情是不必要的 - 你应该传递你的slideshow
变量。你想要实现什么目标?