使用给定的css类切换所有元素

时间:2013-01-09 10:22:18

标签: javascript toggle prototype each scriptaculous

我正在尝试使用单个复选框同时切换具有给定css类的多个元素。这看起来像这样:

HTML:

<input type="checkbox" onclick="toggle_class('.subdivision_wraps');" />

JS:

function toggle_class(cssClass) {
  $$(cssClass).each(function(s){
    new Effect.toggle(s, 'blind', { duration: 0.3 });
  });
}

应该工作吧?错了..只有第一个div被切换。奇怪的是,如果我使用BlindDown,一切都按照我想要的方式工作(所有div同时被蒙蔽)。

我做错了吗?我知道我可以使用BlindDown和BlindUp,但我宁愿解决这个切换问题。提前谢谢!

1 个答案:

答案 0 :(得分:1)

这似乎是Effect.toggle的一些奇怪问题。如果您提供div元素id值,则代码可以正常运行:http://jsbin.com/ifeqek/1否则,您会看到效果:http://jsbin.com/ifeqek/3

所以我可能会将toggle_class更新为:

function toggle_class(cssClass) {
  $$(cssClass).each(function(s){
    s.identify(); // <======== The new bit, assign an id if there isn't already one
    new Effect.toggle(s, 'blind', { duration: 0.3 });
  });
}

Live Example | Source