在Prototype JS的每个函数中都有'this'

时间:2014-07-31 04:08:33

标签: javascript prototypejs this each

我试图找到一个带有example选择器的div元素,该代码也有代码中所示的active选择器。

使用Prototype JS this返回windows.object而不是单独的div本身。

如何让this引用每个div元素以便我可以使用它?

$$('.example').each(function() {
    if(this.hasClassName('active')) {
        this.previous().setStyle({border:'1px solid #999'})
    }
});

1 个答案:

答案 0 :(得分:4)

http://api.prototypejs.org/language/Enumerable/prototype/each/

要访问该元素,您不需要更改迭代器函数的上下文(this)。迭代器函数接收项作为第一个参数。你只需要命名参数。

$$('.example').each(function(div) {
    if(div.hasClassName('active')) {
        div.previous().setStyle({border:'1px solid #999'})
    }
});

此外,您可以通过更新传递到$$选择器来删除条件:

$$('.example.active').each(function(activeDiv) {
    activeDiv.previous().setStyle({border:'1px solid #999'})
});

如果您有兴趣控制函数内this的值,请查看callapplybind