jquery函数根本没有触发

时间:2011-11-16 13:06:06

标签: jquery

真正愚蠢的问题。我想我现在已经这么做了,但我显然错过了一些东西。我希望我的函数在页面加载时立即触发,以检查变量的值并根据该值使按钮显示或消失。但我写的函数永远不会被调用。我将函数放在$ .Load()和$(document).ready jquery调用中。如何才能启动此功能?

 $(document).ready(function () {
        debugger;        
        (function () {           
        debugger;
        var $b = '<%=toggle %>';
        var buttonTog = $("#test1");
        var buttonTog1 = $("#Submit1");
        if($b=="1")
        {
            debugger;
            buttonTog1.css({
                display: 'block'
            })
            buttonTog.css({
                display: 'none'
            });
        }
        else if($b=="0")
        {
            debugger;
            buttonTog1.css({
                display: 'none'
            })
            buttonTog.css({
                display: 'block'
            });
           }            
       });
       ...
    });

正如你所看到的,我在那里有多个调试器语句,只是没有被击中...当我点击$(文档).ready并进入第一个调试器语句时,它根本没有触及下一个功能?我不明白吗?它顺着它?你不能在.ready(function())中调用一个函数吗?绝对需要完成一些研究。

4 个答案:

答案 0 :(得分:9)

您定义了一个匿名函数,但您从不调用它。以下是自动调用匿名函数的方法:

$(document).ready(function () {
    (function() {
        var buttonTog = $("#test1");
        var buttonTog1 = $("#Submit1");
        ...
    })(); // <!-- notice the (); at the end
});

这就是说,我很难看到在document.ready回调中使用这个匿名自动调用函数的用处,它本身就是一个匿名函数。事情在这里变得非常私密:-)

您可以简单地在其中编写代码:

$(document).ready(function () {
    var buttonTog = $("#test1");
    var buttonTog1 = $("#Submit1");
    ...
});

我怀疑您可能遗漏了一些关于$(document).ready函数及其语法的重要概念。我建议您查看the documentation以获取更多示例。

答案 1 :(得分:3)

只需删除(function () {,即});即可

答案 2 :(得分:2)

你已经定义了你的功能,但你从来没有打过它。叫它。

function doSomething () {           
        debugger;
        var $b = '<%=toggle %>';
        var buttonTog = $("#test1");
        var buttonTog1 = $("#Submit1");
        if($b=="1")
        {
            debugger;
            buttonTog1.css({
                display: 'block'
            })
            buttonTog.css({
                display: 'none'
            });
        }
        else if($b=="0")
        {
            debugger;
            buttonTog1.css({
                display: 'none'
            })
            buttonTog.css({
                display: 'block'
            });
           }            
       });

然后

$(function(){
     doSomething(); // here, you've executed your function
});

答案 3 :(得分:2)

这将完美地运作......

检查http://jsfiddle.net/GfjHd/

HTML

<input type="button" value="One" id="test1" />
<input type="button" value="Two" id="Submit1" />

的Javascript

$(document).ready(function () {      
        var $b = '1';
        var buttonTog = $("#test1");
        var buttonTog1 = $("#Submit1");
        if($b=="1")
        {
            //debugger;
            buttonTog1.css({display: 'block'});
            buttonTog.css({display: 'none'});
        }
        else if($b=="0")
        {
           // debugger;
            buttonTog1.css({display: 'none'})
            buttonTog.css({display: 'block'});
         }            
    });