原型选择器:简单的例子

时间:2010-04-27 13:07:07

标签: prototypejs css-selectors

我刚刚开始制作原型,之前我正在使用jquery。

我在互联网上找不到关于如何做的简单例子:

  • 选择页面上具有相同ID的所有元素 (我这样做但它只适用于第一个元素:$('mydiv').hide()
  • 按其ID选择另一个div中包含的div。
  • 隐藏所有具有myClass类的元素。

3 个答案:

答案 0 :(得分:7)

如上所述,您不应该在页面上拥有相同的ID。除了违反标准之外,它还是一个潜在问题的处方,因为你不知道你的JavaScript会如何反应。而是使用类。

  

选择具有相同元素的所有元素   页面上的 id 类(我正在这样做但是它   仅适用于第一个元素:   $('mydiv')。hide())

使用$$

$$('.myclass')
  

选择包含的div   他们身份的另一个div。

使用$$

$$('div#outer div#inner')
  

隐藏所有拥有myClass的元素   类。

使用$$each()hide()

$$('.myClass').each(function(d) {
  d.hide();
});

$$是你的朋友。

答案 1 :(得分:1)

我要添加的一些内容。

$$('.myClass').each(function(d) {
  d.hide();
});

可以替换为:

$$('.myClass').invoke("hide");

此外,请谨慎使用$$,在具有较大dom的网页中,使用$定位父元素通常会更快,然后使用select()作为选择器

所以

$$('div#outer div#inner') etc....

可以像这样重写:

$('parent_of_inner_and_outer').select('div#outer div#inner') etc....

答案 2 :(得分:0)

这不是特别漂亮,但如果你遇到像我最近那样的情况,那里可能有多个项目在页面上具有相同的id,你没有能力改变它,那么这样会起作用。就我而言,我至少知道他们都是跨度标签。

       var spans = $$('span');
        for (i = 0; i < spans.length; i++) {
           var span = spans[i];
           if (span.id == 'add_bookmark_image_' + id) {
              span.hide();
           }
           if (span.id == 'is_bookmarked_image_' + id) {
              span.show();
           }
        }