Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 15.10.2019, 20:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Aruta
по поводу верстки ... чтобы посмотреть на живом примере как это работает
Я не увидел где там корзина, флажки, ... А анализировать код вашей страницы невмоготу, у нас чай уже не полдень, а гораздо более.

Вот что я вижу, и если просмотреть код этих флажков, то там и близко нет той верстки о которой тут речь. Где, в каком месте эти блоки с флажками, бог его знает.

Последний раз редактировалось laimas, 12.10.2020 в 16:58.
Ответить с цитированием
  #32 (permalink)  
Старый 16.10.2019, 06:21
Аспирант
Отправить личное сообщение для Aruta Посмотреть профиль Найти все сообщения от Aruta
 
Регистрация: 08.07.2019
Сообщений: 85

laimas,
не туда смотрите... После этой страницы надо перейти в корзину - внизу большая желтая кнопка. И вот тогда уже вы попадёте на нужную страницу и там будет то что я пытаюсь сделать.
Спасибо за попытку помочь, всё равно

http://prntscr.com/pjv28w

Последний раз редактировалось Aruta, 16.10.2019 в 06:29.
Ответить с цитированием
  #33 (permalink)  
Старый 16.10.2019, 07:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Во-первых удалить ошибки, которые у вас есть - это касаемо метода live(), $.browser и т.п., которые устарели и удалены в новых версиях JQ. В новых версиях метод live() заменяет метод on().

У вас подключается давно убитая версия 1.7.1, в ней нет метода on(), поэтому мой скрипт и не работает. А у вас ошибки связанные с методом live() означают значит проблемы с доступом к объектам.

Решение (варианты):

а) упорно паритесь со старьем, заменяете то, что вам предлагают, на старые методы;

б) выбрасываете в помойку старье, подключаете новую версию JQ (и плагины под нее), подправляя в коде проблемные места, и больше никогда не ломать голову по этому поводу - все что вам тут будут предлагать уж точно не будут писать под давно умершую версию библиотеки.
Ответить с цитированием
  #34 (permalink)  
Старый 16.10.2019, 07:53
Аспирант
Отправить личное сообщение для Aruta Посмотреть профиль Найти все сообщения от Aruta
 
Регистрация: 08.07.2019
Сообщений: 85

laimas,
Спасибо. Сейчас проверю про версии. В таком состоянии мне его передали, а переписывать всё с нуля нет желания
Ответить с цитированием
  #35 (permalink)  
Старый 16.10.2019, 08:13
Аспирант
Отправить личное сообщение для Aruta Посмотреть профиль Найти все сообщения от Aruta
 
Регистрация: 08.07.2019
Сообщений: 85

laimas,
странно, но метод on() поддерживается 1.7 ведь все мои скрипты на нём я писал.

Нашел я проблему! заработало, но только если жать на чекбокс, а не на его родителя.
А я то постоянно жал по задумке - на родительский блок этажа, поэтому и думал, что не работает

Теперь встала проблема новая тогда - нужно жать на родительский блок, а не на сам input чтобы чекбокс у каждого блока этажа принимал on/off
Ответить с цитированием
  #36 (permalink)  
Старый 16.10.2019, 08:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Aruta
но метод on() поддерживается 1.7
Да? Ну значит запамятовал, вроде бы как кардинальные изменения начались с версии 1.8, в ней уже удален live() и прочие. Ну с методами ладно, но эта древняя, забытая временем и молью библиотека не будет обрабатывать событие change на флажках, то есть придется это делать на click, что не очень то и гут. К примеру, у вас эти флажки обрабатываются еще и потому, что стоит вот такой обработчик:

$('.montage__floor').on('click', '.floor__item-wrap', function() {
    var $input = $(this).children('.floor__item-inner').find('input');
	if ($input.prop('checked'))	{
		$input.prop('checked',false); 
		$(this).css('background', 'none');
	}else{
		$input.prop('checked',true);
		$(this).css('background', '#bbd9ff');
	};
});


А он не должен затрагивать иные флажки, то есть нужно либо разделить события пространством имен, либо конкретизиравать селектор. И еще, если этот обработчик убрать, то флажки даже естественным образом (без обработчиков) нельзя выбрать, а это говорит о том, что в коде есть нечто, что мешает корректной работе.

И эта ошибка на сервере была замечена - Warning: getimagesize( http://test.vhost78896.cpsite.ru/ima...ast-raam.png): failed to open stream: No such file or directory in /home/u78896/test.vhost78896.cpsite.ru/vqmod/vqcache/vq2-catalog_controller_checkout_cart.php on line 465.

Последний раз редактировалось laimas, 16.10.2019 в 08:48.
Ответить с цитированием
  #37 (permalink)  
Старый 16.10.2019, 08:48
Аспирант
Отправить личное сообщение для Aruta Посмотреть профиль Найти все сообщения от Aruta
 
Регистрация: 08.07.2019
Сообщений: 85

laimas,
Ваш код работает полностью если удалить мой
$('.montage__floor').on('click', '.floor__item-wrap', function() {
    var $input = $(this).children('.floor__item-inner').find('input');
	if ($input.prop('checked'))	{
		$input.prop('checked',false); 
		$(this).css('background', 'none');
	}else{
		$input.prop('checked',true);
		$(this).css('background', '#bbd9ff');
	};
});


Все input выделяются без проблем, но тогда надо жать на сам input. Залил изменения на сервер.

Сейчас там только ваш код
//общему родителю флажков делегируется обработка изменения их состояния
//если таких блоков upsale__block__sub-right-wrap много, то этот обработчик будет выполнятся только в контексте текущего
$('div.upsale__block__sub-right-wrap').on('change', 'input', function(e) { 
    var chk = $(e.delegateTarget).find('input'); //получили все флажки текущего родителя
    //если источник события это флажок block__check, что можно проверить и так: $(this).hasClass('block__check')
    if(chk.eq(0)[0]==this) chk.slice(1).prop('checked', this.checked); //то определить его состояние всем последующим флажкам текущего родителя  
    else { //иначе это изменение флажков набора
        var c = chk.slice(1).filter(':checked').length; //есть ли выбранные флажки в наборе?
        chk.eq(0).prop({checked: c, disabled: !c}); //результат операции присвоить свойствам checked и disabled флажка block__check    
    }
});
Ответить с цитированием
  #38 (permalink)  
Старый 16.10.2019, 08:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Не работает обработчик события chage (поместите в обработчик вывод в консоль или alert, для того чтобы убедится в этом), и зачем на все флажки этих блоков навешан обработчик click? Судя по логике вот это $('.montage__floor').on('click', '.floor__item-wrap', function() должно быть только для флажка "Все".

И удалите ошибку на сервере.

Откройте свою страницу в FF, в отладчике в инспекторе кода можно видеть обработчики каких событий имеет элемент. Если есть такие, то у элемента будет кнопка "event", щелчок по которой покажет все навешанные на него обработчики. Анализируйте для чего вы навешали лишнего.

Последний раз редактировалось laimas, 16.10.2019 в 09:00.
Ответить с цитированием
  #39 (permalink)  
Старый 16.10.2019, 09:40
Аспирант
Отправить личное сообщение для Aruta Посмотреть профиль Найти все сообщения от Aruta
 
Регистрация: 08.07.2019
Сообщений: 85

laimas,
погиб хостинг видать час уже не может обновить файлы, которые я залил. Нет на этих чекбоксах event.
http://prntscr.com/pjwozb

на локальном сервер проверил - обработчик срабатывает каждый раз, когда я жму на любой из чекбоксов

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

Сообщение от Aruta
Нет на этих чекбоксах event
А это что? У вас делегируется обработка, конкретно непосредственно на флажке только на одном запрещено всплытие.

Последний раз редактировалось laimas, 12.10.2020 в 16:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замыливание нескольких div-ов при наведении на один из элементов wayrus161 Элементы интерфейса 2 31.08.2018 07:20
Выделение строки <select> при выборе checkbox DarkMaster13 Общие вопросы Javascript 4 14.04.2014 03:30
Неповторяющаяся заставка (при возвращении с других страниц сайта) thrastogotch jQuery 3 07.06.2012 17:57
Как при наведении на один объект изменять стили других? greysells jQuery 4 06.12.2009 11:00
Выделение checkbox при условии атрибута... SashaBorandi jQuery 1 07.02.2009 14:18