2012-05-17 183 views
0

我想執行JQuery切換功能(切換輸入字段以使其可供客戶端訪問),只有在滿足特定條件時才能執行。 (我正在使用JavaScript測試條件。)我可以這樣做嗎?出於某種原因,當我將其設置在JavaScript函數中時,JQuery切換函數不起作用,所以我不確定我是否做錯了什麼,或者根本無法完成。切換元素不適用於jQuery

<script type="text/javascript"> 
function conditionalToggle() 
{ 
    if (conditionIsMet) 
    { 
     // JQuery toggle call here 
    } 
} 
</script> 
+1

如果它在外部但不在內部,則'conditionIsMet'爲false或主機功能未被調用,請添加一些警報以查看哪些是 –

+1

是的,更多信息。也許顯示你正在調用conditionalToggle的代碼,以及該函數中的jQuery函數。 –

+1

這應該工作,如果jQuery在此函數之前加載,並正確調用該函數。你可以粘貼整個代碼或在http://jsfiddle.net/ –

回答

3

你可能不使用jQuery權,或不執行的功能,或者(新的jQuery用戶提供了最常見的錯誤)不會等待DOM做好準備:

function foo(){ 
    if ("foo" === "foo") 
     $('#elementId').toggle(); 
} 

$(function(){ // functions inside $() runs after the DOM is ready. 
    foo(); 
}); 

其中elementId是您的元素ID的佔位符。
Simple DEMO


注意,您可以使用此toggle過載能力:

$('#elementId').toggle(showTheElementOrNot); 

toggle(showOrHide)
showOrHide布爾值,指示是否要顯示或隱藏的元素。

jQuery docs

1

如果就緒()函數中

<script type="text/javascript"> 
$(function() { 
    function conditionalToggle(){ 
     if (conditionIsMet) { 
     $(element).toggle(); 
     } 
    } 
}); 
</script> 

或只是做的jQuery應該工作:

<script type="text/javascript"> 
    function conditionalToggle() { 
     if (conditionIsMet) { 
      element.style.display = element.style.display=='block' ? 'none' : 'block'; 
     } 
    { 
</script> 
0

你可以做到這一點時,DOM是準備好了,如果你已經仍然存在問題,你也可以這樣做:

<script type="text/javascript"> 
    $(window).load(function() { 
     conditionIsMet && $('#elementId').toggle(); 
    }); 
</script>