Одинаковые эффекты на разные объекты jQuery
Доброго дня
Производится Ajax запрос $.get( "ajax/load.php", function(data) { if(data){ if(btn.is('[data-type="price"]')){ modal_main.html(data.price).hide().show("fade", 1000 ); } else if(btn.is('[data-type="callme"]')){ modal_main.html(data.callme).hide().show("fade", 1000); } } }); modal_main = DIV в который выгружаем data. Как можно об играть .hide().show("fade", 1000 ); данную часть? Что бы не прописывать к каждой выгрузке, а сделать в одном месте. |
А зачем тогда if(who is button)?
modal_main.html(data[btn.data('type')]).hide().show("fade", 1000 ); |
$.get( "ajax/load.php", function(data) { if(data){ if(btn.is('[data-type="price"]')){ modal_main.html(data.price).hide().show("fade", 1000 ); } else if(btn.is('[data-type="callme"]')){ modal_main.html(data.callme).hide().show("fade", 1000); } } }); ajax/load.php - PHP файл, в нем список TPL файлов + GET параметры к шаблону btn - это кнопка в HTML <!-- пример кнопки --> <a href="#" class="fc_btn icon-phone-squared" data-ajax="ajax_btn" data-header="Заказать звонок" data-type="callme"> Заказать звонок </a> т.е. суть какая: есть web-сайт, на нем "N" кол-во форм (заказать звонок, купить в один клик, обратная связь, оставить комментарий и т.п.).. Практически все формы должны быть в модальном окне. Логика происходящего: 1. HTML скелет модального окна <div class="box-modal" id="ajax_modal"> <div class="box-modal_header"> <div class="box-modal_name"></div> <div class="box-modal_close">x</div> </div> <div class="box-modal_content"></div> </div> 2. JS функция вызывающая модальное окно $(document).on('click', '[data-ajax="ajax_btn"]', function(){ var modal_name = $(this).attr('data-header'); var modal_main = $('#ajax_modal').find('.box-modal_content'); $('#ajax_modal').find('.box-modal_name').html(modal_name); $('#ajax_modal').modal({ /*.. тут GET AJAX ..*/}); return false; }); 3. Ajax GET загружаем в .box-modal_content нужную нам форму в зависимости от нажатой кнопки В зависимости от атрибутов кнопки (по которой кликнули) у нас происходит заполнение модального окна и соответственно показывается нужная форма. - - - - - - - - - А теперь еще возвращаемся к вопросу! :) Как можно записать применяемые эффекты к data.* что бы было по принцепу: var str = $(this); ? |
Лучше вернитесь к первоначальному. Что у вас записано, а записано следующее:
1) есть объект А на клиенте 2) определяется что за кнопка активировала запрос, и по значению этой кнопки определяется свойство возвращенного объекта, который надо поместить в А Возникает вопрос - а зачем этот огород вообще нужен? Если возвращенные данные загружаются в один и тот же объект на клиенте, а инициаторами запроса сервера выступают N кнопок, то надо полагать, что параметры запроса будут различны. Если параметры запроса различны, а значит и север возвращает соответствующие им данные, то каким образом он может возвратить помимо нужных еще и лишние данные? А если сервер возвращает только необходимые данные, то никаких проверок на клиенте быть не должно. Если А - объект принимающий формы, то запрос от bt1, bt2... вернет только нужную форму (если все грамотно построено), а значит A.html(data) - все, и к чему эти if()? Другое дело, если по ответу сервера возвращенные данные могут загружаться в N объектов на клиенте, то свойства возвращенного объекта могут идентифицировать эти N объектов, тогда: for(k in data) $('#'+k).html(data[k]) |
$.get( "ajax/load.php", function(data) { for (key in data) { modal_main.html(data[key]).hide().show("fade", 1000 ); } }); что то подобное должно получится? я правильно понимаю? При клике получаем "ключ" который собственно используем в php для вызова нужного tpl? |
А у вас что сразу несколько форм сервер возвращает? Вы же пишите, что они в один объект всегда помещаются, а в момент времени запрашивается и возвращается одна форма, и зачем data[key], можно ведь html вернуть и modal_main.html(data).
А вот для обмена данными формы с сервером тут удобнее будет JSON, так как нужно будет обрабатывать ошибки в полях и отображать их. |
:)
запрос на получения шаблона формы - производится в один файл (php) он уже из массива берет нужный по (data.xxx) а на post формы уже у каждой свой обработчик |
$result = array( 'callme' => $api->design->fetch('ajax/ajax.modal_callme.tpl'), 'price' =>$api->design->fetch('ajax/ajax.modal_price.tpl')); вот собственно каким образом распределение.. в php. Но вы навели меня на нужную линию)) комфортней будет при нажатие: берем (скажем data-key) общаемся в load.php - вставляем наш key в result подбираем TPL файл и вставляем уже просто .html(data) |
laimas,
Профессор! Огроменнейшая благодарность за идею! Вопрос снят с производства ))) Итог, ключевое: php $result = $api->design->fetch('ajax/ajax.modal_'.$key.'.tpl'); js $.get( "ajax/load.php", function(data) { modal_main.html(data).hide().show("fade", 1000 ); }); |
Ну вообще можно было бы и проще:
exit($api->design->fetch('ajax/ajax.modal_'.$key.'.tpl')) если $key определяемая POST-запросом определена условием или набором. А на мысль должно наводить содержание вашего сайта и задачи его обслуживаемые. Например, почему бы и нет, если Ajax success всех запросов будет ссылаться всегда на один и тот же объект описывающий набор различных функций. А обмен данными всегда JSON, свойства которого определяют функцию (функции), которые будут выполнены. А это может быть помещение данных в объекты, вывод сообщений, обработка ошибок, определение значений установленным переменным, и т.п. В общем некий диспетчер, и без всяких IF. И один запрос/ответ может определять выполнение нескольких функций на клиенте, например, поместить данные в объектах и вывеси сообщение. Но чтобы возвращалось сразу N-форм, это нонсенс. |
Часовой пояс GMT +3, время: 14:27. |