2012-05-17 2 views
0

Я хотел бы выполнить функцию переключения JQuery (она переключает поле ввода, чтобы сделать его доступным для клиента), только если выполнено определенное условие. (Я тестирую условие с использованием JavaScript.) Могу ли я это сделать? По какой-то причине функция jQuery toggle не работает, когда я устанавливаю ее внутри функции JavaScript, поэтому я не уверен, что я делаю что-то неправильно, или если это невозможно сделать вообще.элемент toggle не работает с jQuery

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

Если он работает снаружи, но не внутри, то либо 'conditionIsMet' является ложным, либо функция хоста не вызывается, добавьте некоторые предупреждения, чтобы увидеть, какой –

+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 является владельцем места для вашего идентификатора элемента.
Simple DEMO


Обратите внимание, что вы можете использовать эту toggle перегрузки:

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

toggle(showOrHide)
showOrHide логическое значение, указывающее, следует ли показать или скрыть элементы.

jQuery docs

1

JQuery должен работать, если внутри готовой функции()

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

или просто сделать:

<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> 
Смежные вопросы