Показать сообщение отдельно
  #10 (permalink)  
Старый 02.01.2019, 15:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от giwuf
я пока не разобрался, как это можно сделать правильно
Просто не писать "именных скриптов", у вас ведь фактически для каждого из двух товаров свой обработчик, которые как браться близнецы похожи друг на друга.

Есть коллекция элементов, сколько их в наборе, что за контент она содержит не суть важно, но если нужно по событию обработать коллекцию, то обработчик должен быть один, а в нем можно всегда получить у текущего объекта или у его родителя из атрибута/атрибутов необходимые данные.

Галерея подключает необходимое либо через html структуру ею же определяемую, либо через определяемые ею атрибуты у элементов, либо через объект указываемый при инициализации. Пусть база хранит некие товары имеющие оценки, на основании которых серверный сценарий согласно условиям галереи выводит их на страницу для нее. В атрибуты элементов можно поместить необходимое и для пользовательского сценария. Не надо прогонять JS скрипт через РНР вывод для чтобы подставлять в JS скрипт конкретные id, тексты и т.п., это плохо. А тем более плохо, если это делается руками, ибо при смене объектов или их добавлении, придется править клиентский скрипт.

Если по условию определяются некие значение для вывода или атрибутов элементов, то наверное выгоднее определить значения, а потом описать вывод, установку атрибутов. Здесь удобнее либо тернарный оператор, либо описание значений в массиве/объекте, индексом для выборки в котором будет служить результат условия преобразованный в число. То есть:

var cond = $('.href').data("target")=="#modal-flint-water", //или  +($('.href').data("target")=="#modal-flint-water") для индекса
    opt1 = cond ? val1 : val2,
    opt2 = cond ? val1 : val2,
    .......
//используем
$('.order-water').attr({href: opt1, oth: opt2, ...});
.....

Последний раз редактировалось laimas, 02.01.2019 в 17:09.
Ответить с цитированием