0

我是 jquery 的新手,但遇到了一些问题。请任何人都可以告诉我,这是下面代码中的代码块,它正在调用“hideAllMessages”函数。点击('信息','错误','警告','成功')

,它正在调用hideAllMessages函数,但无法理解哪个是代码块,谁在执行此任务。

FIDDLE

由于下一行中没有 javascript 'onclick' 函数。

<li><a href="#" class="trigger info-trigger">Info</a></li>

实际上我想在点击('Info','Error','Warning','Success')后询问代码流。

4

3 回答 3

0

首先hideAllMessages();,当文档从 jquery 准备好时调用。

然后showMessage(myMessages[i]);调用 your 并hideAllMessages();再次使用它,因为它在你的showMessage().

于 2012-06-29T08:45:41.653 回答
0

尝试Ctrl+F:-)您似乎忽略了代码的以下部分:

$(document).ready(function(){
    alert("ready function called");
    // Initially, hide them all
    hideAllMessages();
    ...

此外,它是从showMessage-function 安装的 click-handler 调用的:

$('.'+ type +'-trigger').click(function(){
    hideAllMessages();                  
    $('.'+type).animate({top:"0"}, 500);
});

HTML中不需要有onclick属性,通常安装事件监听器的方式是纯粹的 DOM 任务(jQuery 方法)。

于 2012-06-29T08:45:54.310 回答
0

首先,

jQuery 的工作方式与 javascript 类似。

除非被调用,否则函数不会被“激活”。

查看您的代码,您会发现有一个

$(document).ready(function{
    //insert code here
});

上面的代码将在您的页面加载时从上到下运行。

这段代码运行完毕后,你的 jQuery 将停止运行。

但是你也会意识到你的每个“li”都有一个“触发”功能,它会激活 show-message 功能,显示其各自的消息。

这就是您的代码的工作方式

编辑:

$(document).ready(function(){
alert("ready function called");

     // Initially, hide them all
     hideAllMessages();

     // Show message
     for(var i=0;i<myMessages.length;i++)
     {
        showMessage(myMessages[i]);
     }

页面加载时,“showMessage”函数被调用4次。(可以看到,页面加载时有4条弹出消息。)

每次调用 showMessage 函数时,都会发送一个特定的“类型”。其中包括信息、错误等。

function showMessage(type)
{
alert("showMessage function called");
$('.'+ type +'-trigger').click(function(){
      hideAllMessages();                  
      $('.'+type).animate({top:"0"}, 500);
});
}

但是,在这些 showMessage 函数中的每一个中,实际上都没有运行,该函数仅在单击“按钮”时运行。

$('.info-trigger'.click(function(){

在上面的示例中,“info”类型被传递到 showMessage 函数中,它将替换“type”,从而生成信息触发器。

单击 info 按钮时,该函数将首先运行 hideMessage 函数,然后运行 ​​animate 函数。

希望这能解释。

于 2012-06-29T08:50:34.247 回答