2012-05-17 144 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>