2011-11-16 75 views
2

真正的啞巴問題。我想我現在已經得到了這一點,但我明顯失去了一些東西。我希望我的函數在頁面加載後立即觸發,以檢查變量的值並使按鈕基於該值出現或消失。但我寫的函數從來沒有被調用。我將函數放在$ .Load()和$(document).ready jquery調用中。我怎樣才能讓這個功能開火?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' 
      }); 
      }    
     }); 
     ... 
    }); 

正如你所看到的,我在那裏有多個調試器語句,只是不被擊中......當我打的$(document)。就緒,我進入第一debugger語句,它只是沒有按觸摸下一個功能?我不明白嗎?它正確嗎?你不能在.ready(function())中調用一個函數嗎?明確需要做一些研究。

回答

7

你可以定義一個匿名函數,但你永遠不會調用它。以下是如何自動調用匿名函數:

$(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以獲取更多示例。

+0

似乎沒有被內部匿名函數的任何一點反正。 – BNL

+1

@BNL,這正是我在答案中指出的。 –

+0

是的,閱讀理解失敗。 – BNL

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

只是刪除(function() {和它的});會做

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'}); 
     }    
    });