2015-12-16 2 views
0

это мой пример кода:JQuery/JavaScript: Включение и отключение ДИВ

$("#new_warehouse").onClick(function() { 
    $('.js-dependent-fields:hidden').children().prop('disabled', true); 
}); 

Это добавляет "отключено" для всех Чайлдс моих JS-зависимых-полей DIV, если style="display: none;". Как я могу вернуть это, когда div js-dependent-fields становится видимым?

Большое спасибо заранее!

ответ

2

Вы должны правильно использовать .on() слушатель с .click() событие с функцией обратного вызова в методе prop():

$("#new_warehouse").on('click', function() { 
    $('.js-dependent-fields').children().prop('disabled', function(){ 
     return $(this).is(':hidden'); 
    }); 
}); 

Следует отметить, что целевой элемент является селектором классов, поэтому он возвращает коллекцию, поэтому мы имеем t o найдите каждый из них с $(this) и проверьте, есть ли он :visible.

+0

Это почти то, что мне нужно. Одна странная вещь: Div, который появляется (с выбранной формой в нем), отключен (потому что это ребенок). Только если я снова нажму на поле отключено, он активируется. Что я должен изменить? – CottonEyeJoe

+0

'.on ('change', function()' сделал это для меня! – CottonEyeJoe

+0

@Harakiri приятно видеть, что так оно и работало для вас. На самом деле было очень сложно понять, что на самом деле происходило в конце, потому что Рабочий пример был там, я предлагаю вам добавить небольшой вопрос в вопрос для лучшего понимания. Наконец, вы можете приветствовать. – Jai

0

Вы можете изменить эффект, используя: видимый селектор псевдосекунд. Но для вашей потребности вы можете использовать, как это:

$('.js-dependent-fields:hidden').children().prop('disabled', 
    $('.js-dependent-fields').is(':hidden')//sets true if hidden else false 
); 
+1

не будет '$ ('. Js-dependent-fields'). Is (': hidden')' достаточно? –

+1

@CerlinBoss Oh! да, я был слишком использован ... –

0

Возможно, более подходящим код будет

$("#new_warehouse").onClick(function() { 
     $('.js-dependent-fields').children().prop('disabled', 
      $('.js-dependent-fields').is(':hidden') ? 
      true : false); 
    }); 
+0

Вы можете просто передать '$ ('. js-dependent-fields'). is (': hidden')' не нужно для тернарного оператора. – jcubic

Смежные вопросы