Как проверить, что есть поле селект у товара
Здравствуйте.
Общими усилиями для страницы написал скрипт abv347.js, который с помощью функции $('.addtocart-button').on('click', function() проверяет, выбрано ли значение из выпадающего списка с типом багета картины. Скрипт хорошо отрабатывает на странице с детальным описанием товара, где может существовать только один выпадающий список с id = baget_select. Если кликнуть на кнопку добавить в корзину на выше указанной странице категории товаров для товара, у которого нет возможности выбора типа багета, то скрипт сходит с ума, видя другие селекты с id = "baget_select". Как написать условие $('.addtocart-button').on('click', function(), которое бы проверяло, есть ли поле селект с выбором типа багета только у того товара, под которым была нажата кнопка с class="addtocart-button"? |
На странице в принципе не должно быть нескольких элементов с одинаковым id. На то он и идентификатор, чтобы быть уникальным.
Вот костыли для проверки наличия селекта багетов: var hasBagetSelection = $(this.form).find('#baget_select').length > 0; if (hasBagetSelection) { alert('есть') } else { alert('нет') }; |
Цитата:
Тестирую на локальном сервере. Условие не срабатывает верно. Воспользовался отладчиком Хрома, поставил точку останова на var hasBagetSelection = $(this.form).find('#baget_select').length > 0; он указывает, что this на этой строке это span.addtocart-button, видимо поэтому hasBagetSelection всегда = false. Выпадающий список с типом багета находится в другой ветке DOM насколько понимаю, судя по принтскрину: ![]() Как можно добраться и проверить наличие #baget_select в соседней ветке DOM? |
Цитата:
Обращайся сразу $('#baget_select') |
используйте вместо #baget_select => .baget_select
к спискам с баггетами добавьте class="baget_select" |
Цитата:
|
Цитата:
|
я вкратце объясню, так как не знаю ваш код.
вы вызываете событие $('.addtocart-button').click(function(){ //внутри есть объект this $(this).parent().prev(). //по моему такой путь до блока с выбором типа багета find('.baget_select'); // вот вам ваш объект. далее делаете с ним что хотите. }); |
Цитата:
А как определить у элемента, нажатие по которому было совершено и функция для которого сейчас выполняется, наличие/отсутствие класса с определённым именем? |
$('element').click(function(){ $(this).hasClass('class_name'); // true, если есть, false - если нет }); |
Часовой пояс GMT +3, время: 11:34. |