Это мой пример кода:

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

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

Спасибо заранее!

0
CottonEyeJoe 16 Дек 2015 в 12:18

3 ответа

Лучший ответ

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

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

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

2
Jai 16 Дек 2015 в 09:36

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

    $( "#new_warehouse" ).onClick(function() {
        $('.js-dependent-fields').children().prop('disabled',  
           $('.js-dependent-fields').is(':hidden') ? 
             true : false );
     });
0
GeForce 16 Дек 2015 в 09:26

Вы можете полностью изменить эффект, используя: visible pseudo class selector. Но для ваших нужд вы можете использовать вот так:

$('.js-dependent-fields:hidden').children().prop('disabled', 
   $('.js-dependent-fields').is(':hidden')//sets true if hidden else false
);
0
Bhojendra Rauniyar 16 Дек 2015 в 09:32