如何在 Scriptaculous JavaScript 中选择 CSS 类?

发布于 2024-07-30 11:03:24 字数 474 浏览 5 评论 0原文

这是我的代码片段:

<div class="myclass" id="demo" style="display:none;">Hello.</div>

<a href="#" onclick="$('.myclass').fade({ duration: 0.3, from: 1, to: 0 }); $('demo').appear({ delay: 0.35 }); return false;">Click ME!</a><br />

我的 Firebug 开发插件说:

$(".myclass") 为空

我尝试了各种其他名称,例如: $('div.myclass')$('myclass'),徒劳无功。 如何让这种效果在课堂上发挥作用? 谢谢!

Here's a snippet of my code:

<div class="myclass" id="demo" style="display:none;">Hello.</div>

<a href="#" onclick="$('.myclass').fade({ duration: 0.3, from: 1, to: 0 }); $('demo').appear({ delay: 0.35 }); return false;">Click ME!</a><br />

My Firebug development plugin says:

$(".myclass") is null

I have tried various other names, such as: $('div.myclass') and $('myclass'), to no avail. How do I get this effect to work on a class? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半窗疏影 2024-08-06 11:03:24
$('.myclass')[0].fade()

原型(和 mootools)中的 $$ 接受任何类型的 css 选择器,例如 $$('div#joe') 或 $$('a[rel=awesome]') 并返回一个数组。

$ 将仅返回具有匹配 id 的元素,如 $('joe');

因此,给定这个 html:

<div id="joe" class="awesome"></div>
<div id="sally" class="awesome"></div>
  1. $$('.awesome') 将返回一个包含 DIV
  2. $('joe')$$('#joe ') 实际上是相同的(尽管后者是一个数组)。

编辑

首先删除 onclick 事件并向 rel 属性添加一些信息,如下所示:

<a rel="demo" href="#">Div 1</a><br />
<a rel="demo2" href="#">Div 2</a><br />
<a rel="demo3" href="#">Div 3</a>

然后将其放在文档的 head 脚本标记中。

document.observe("dom:loaded", function() {
    // this makes sure the document is loaded and ready to be manipulated       

    // store your links and demo DIVs in arrays
    var links = $('div.rightcol a');
    var demos = $('.myclass');

    // enumerate over the links
    links.each(function(link){
        // observe the click event of the current link in the loop
        link.observe('click',function(event){
            event.stop();
            // loop the demo DIVs and fade each one
            demos.each(function(demo){
                demo.fade({ duration: 0.3, from: 1, to: 0 });
            });
            // figure out which demo to fade in from the links rel attribute
            var target = link.readAttribute('rel');
            // get the demo target and fade it in
            $(target).appear({ delay: 0.35 });
        });
    });

});

我希望剧本很容易理解。

$('.myclass')[0].fade()

$$ in prototype (and mootools) accepts any sort of css selector like $$('div#joe') or $$('a[rel=awesome]') and returns an array.

$ will return just an element with a matching id like $('joe');

So given this html:

<div id="joe" class="awesome"></div>
<div id="sally" class="awesome"></div>
  1. $$('.awesome') will return an array containing both DIVs
  2. $('joe') and $$('#joe') are effectually the same (though the latter is an array).

EDIT

First remove your onclick events and add some information to the rel attribute like so:

<a rel="demo" href="#">Div 1</a><br />
<a rel="demo2" href="#">Div 2</a><br />
<a rel="demo3" href="#">Div 3</a>

Then put this in the head of your document in a script tag.

document.observe("dom:loaded", function() {
    // this makes sure the document is loaded and ready to be manipulated       

    // store your links and demo DIVs in arrays
    var links = $('div.rightcol a');
    var demos = $('.myclass');

    // enumerate over the links
    links.each(function(link){
        // observe the click event of the current link in the loop
        link.observe('click',function(event){
            event.stop();
            // loop the demo DIVs and fade each one
            demos.each(function(demo){
                demo.fade({ duration: 0.3, from: 1, to: 0 });
            });
            // figure out which demo to fade in from the links rel attribute
            var target = link.readAttribute('rel');
            // get the demo target and fade it in
            $(target).appear({ delay: 0.35 });
        });
    });

});

I hope the script is easy to follow.

心凉怎暖 2024-08-06 11:03:24

值得称赞的是 rpflo,使用侵入性的 javascript 并不理想。 但是,如果您正在寻找要插入的最简单的代码,您始终可以使用 Prototype 提供的调用方法。

<a href="#" onclick="$('.myclass').invoke('fade',{ duration: 0.1, from: 1, to: 0 });
$('.myclass').invoke('appear',{ delay: 0.35 });return false;">Div 1</a>

invoke 方法对 DOM 元素集执行相同的功能,并且避免使用 .each() 方法。

To credit rpflo it is not ideal to use obtrusive javascript. However if you are looking for the simplest code to insert you can always use the invoke method which is provided by Prototype.

<a href="#" onclick="$('.myclass').invoke('fade',{ duration: 0.1, from: 1, to: 0 });
$('.myclass').invoke('appear',{ delay: 0.35 });return false;">Div 1</a>

The invoke method performs the same function on set of DOM elements and avoids having to use the .each() method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文