Одинаковые эффекты на разные объекты 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, время: 20:04. |