原型:观察2个元素并传递不同的参数?

时间:2012-03-21 14:38:19

标签: javascript prototypejs

CI有这段代码:

for(var i = 0; i < toObserve.length; i++) {

    var elems = toObserve[i].split('###');
    var elementToObserve = elems[0];
    var imageToUse = elems[1];

    $(elementToObserve).observe('click', respondToClick);
}

function respondToClick(event) {

    var element = event.element();
} 

在respondToClick函数中,我需要为每个elementToObserve使用不同的图像(imageToUse)。我怎样才能做到这一点?我可以通过一个参数吗?

谢谢!

添加:我尝试了Diodeus的建议,但似乎只使用了最后传递的参数,当我点击的任何元素被点击时。什么是错的,或者我想做的不是正确的方式?

3 个答案:

答案 0 :(得分:1)

使用匿名函数:

$(elementToObserve).observe('click', function(event) {
    var yourVar = "moo";
    respondToClick(event,yourVar)
});

答案 1 :(得分:0)

使用专门的bindAsEventListener

$(elementToObserve).observe('click',
    respondToClick.bindAsEventListener(imageToUse)
);

然后,绑定参数将在event参数之后传递。

function respondToClick(event, imageToUse)
{
    var element = event.element();
    element.src = imageToUse;
} 

答案 2 :(得分:0)

我通过简单地将我的变量分配给元素对象来实现这一点:

elementToObserve.imageToUse = imageToUse;

然后在观察者函数中:

function respondToClick(event) {
    var imageToUse = event.target.imageToUse;
}

我没有意识到这有任何缺点。