Показать сообщение отдельно
  #52 (permalink)  
Старый 16.10.2019, 20:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Aruta
Надо на примере второго только создать скрипт.
Думать надо головой, а не пятой точкой. Поле типа file также имеет событие change, а делегирование по имени класса блоков. Что при этом произойдет при выборе файла в первом блоке?

Код этого обработчика $('.upsale__block__sub-right-wrap').on('click', '.upsale__block__bot-right__title-wrap', function() ... заменить на:
$('div.upsale__block__bot-right__title-wrap').click(function() {
        
        $(this).next()
               .slideToggle(100)
               .end()
               .find('img').toggleClass('arrow_down arrow-up')
               .end() 
               .find('.montage__more').hide()
               .end()
               .find('.invite').show();
        
                           
});

Здесь делегирование совсем не требуется. Правда зачем в нем строки:

$(this).siblings('.upsale__block__bot-right__sub-wrap').find('.montage__more').hide();
$(this).siblings('.upsale__block__bot-right__sub-wrap').find('.invite').show();

(в новом коде это четыре последних операции в цепочке) если можно сразу сделать нужно видимым/скрытым. Код обработки изменения флажков заменить на этот:
$('div.upsale__block__sub-right-wrap').slice(1).on('change', 'input', function(e) { 
	
    var a = $(e.delegateTarget).find('input'), chk = a.slice(1);
    
    if(a.eq(0)[0]==this) {
        chk.prop('checked', false);
        this.disabled = true;  
    }else {
        var c = chk.filter(':checked').length;
        a.eq(0).prop({checked: c, disabled: !c});   
    }
    
});

Он устанавливается на блоки кроме первого.

Последний раз редактировалось laimas, 17.10.2019 в 04:11.
Ответить с цитированием