Mootools在多个实例上重用相同的函数,类似于每个函数

Mootools在多个实例上重用相同的函数,类似于每个函数,mootools,bind,Mootools,Bind,我使用的是mootools墙插件,它在我的应用程序中运行良好,但是如果我添加多个(图像)墙,它只适用于一个墙:::我对脚本的理解不够好,无法添加每个函数或类似函数::: 我需要“绑定”下面的代码,这样说2个div:: 我的第一堵墙: <div id="viewport"> <div id="wall"> 如果阅读,您会注意到,与大多数其他类一样,它使用的第一个参数是元素id 因此,如果您的初始化代码声明 new Wall("wall", { … …然后它将应用于id为

我使用的是mootools墙插件,它在我的应用程序中运行良好,但是如果我添加多个(图像)墙,它只适用于一个墙:::我对脚本的理解不够好,无法添加每个函数或类似函数::: 我需要“绑定”下面的代码,这样说2个div::

我的第一堵墙:

<div id="viewport">
<div id="wall">
如果阅读,您会注意到,与大多数其他类一样,它使用的第一个参数是元素
id

因此,如果您的初始化代码声明

new Wall("wall", { …
…然后它将应用于id为“wall”的图元

您可以简单地复制代码并使用一个带有“wall”,另一个带有“wall_02”。然而,这将是一种糟糕的做法。事实上,如果您以后想要更改某些选项,您必须在两个不同的块中进行更改,并且它们可能会不同步

如果您的唯一区别在于目标
id
,并且要共享选项,只需将选项对象(墙
Wall
类的第二个参数)存储在变量中并使用两次!即:

var wallOptions =  { width: … };

var wallImages = new Wall("wall", wallOptions),
    wallImages2 = new Wall("wall_02", wallOptions);

wallImages.initWall();
wallImages2.initWall();

在函数中嵌入初始化可能更好,但如果您只想拥有两个
Wall
实例,而不想了解更多关于JS的知识,那么这个解决方案可能是最简单的。

可能是这样的:

var my_wall_ids = ['wall', 'wall_02'];
var myWalls = [];
var baseWallOptions = {
        "width": scArray[1],
        "height": scArray[1],
        callOnUpdate: function(items){
            items.each(function(e, i){
                var el = wall[counterFluid];
                if (el) {
                    var a = new Element("img[width="+scArray[1]+"][height="+scArray[1]+"][src={thumb}]".substitute(el));
                    a.inject(e.node).set("opacity", 0).fade("in");
                    e.node.store("tubeObject", el);
                }
                counterFluid++;
                // Reset counter
                if( counterFluid >= scArray[10].length) {counterFluid = 0;}
            }); // end items.each
        }
}
for (var i=0;i<my_wall_ids.length;i++){
    var id = my_wall_ids[i];
    var wallOptions = baseWallOptions;
    // if your customization was something like changing
    // the height , but only on the 'wall' element
    if (id === 'wall') {
        wallOptions.height = 400;
    }
    myWalls[i] = new Wall(id, wallOptions);
    myWalls[i].initWall();
}
var my_wall_id=['wall','wall_02'];
var myWalls=[];
var baseWallOptions={
“宽度”:scArray[1],
“高度”:scArray[1],
callOnUpdate:函数(项){
项目。每个功能(e、i){
var el=壁[反流体];
如果(el){
var a=新元素(“img[width=“+scArray[1]+”][height=“+scArray[1]+”][src={thumb}]”。替换(el));
a、 注入(e.node)。设置(“不透明度”,0)。淡入(“淡入”);
e、 节点存储(“tubeObject”,el);
}
反流++;
//复位计数器
如果(反流体>=scArray[10]。长度){counterFluid=0;}
});//结束项。每个
}
}

对于(var i=0;iTHX@Matti,我稍后将对其进行测试,但是我希望有一种“绑定”的方法,而不创建多个选项,我正在为不同的“墙”使用var数组这在@artlung,THX:::我现在可以使用它并进一步构建选项::
var wallOptions =  { width: … };

var wallImages = new Wall("wall", wallOptions),
    wallImages2 = new Wall("wall_02", wallOptions);

wallImages.initWall();
wallImages2.initWall();
var my_wall_ids = ['wall', 'wall_02'];
var myWalls = [];
var baseWallOptions = {
        "width": scArray[1],
        "height": scArray[1],
        callOnUpdate: function(items){
            items.each(function(e, i){
                var el = wall[counterFluid];
                if (el) {
                    var a = new Element("img[width="+scArray[1]+"][height="+scArray[1]+"][src={thumb}]".substitute(el));
                    a.inject(e.node).set("opacity", 0).fade("in");
                    e.node.store("tubeObject", el);
                }
                counterFluid++;
                // Reset counter
                if( counterFluid >= scArray[10].length) {counterFluid = 0;}
            }); // end items.each
        }
}
for (var i=0;i<my_wall_ids.length;i++){
    var id = my_wall_ids[i];
    var wallOptions = baseWallOptions;
    // if your customization was something like changing
    // the height , but only on the 'wall' element
    if (id === 'wall') {
        wallOptions.height = 400;
    }
    myWalls[i] = new Wall(id, wallOptions);
    myWalls[i].initWall();
}