@nano_e_t_4

Как повесить два скрипт на один div?

Всем привет
Ребят, подскажите плз как можно решить такую задачу:
Есть кнопка на вебке, по нажатию на нее с помощью ajax на сервер передается значение этой кнопки. Скрипт на сервер делает выборку и возвращает эту выборку в вебку, где она вставляется в подменю. Проблема в том, что каждый раз, нажимая на кнопку будет происходить процедура выборки.
Вопрос: можно ли как то "оптимизировать" процесс так, чтобы на первый клик отрабатывал скрипт передачи, а на следующие n кликов просто выпадающее меню с уже полученными значениями?
(скорее всего затея бредовая, но весь мир полон безумия :) )
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
@holfza
var flag = true;
	...
	if(flag) {
		//ваш аякс, выпадающее меню
		//в success меняем значение flag
		flag = false;
	} else {
		//выпадающее меню
	}
	...
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Ставим обработчик на клик, в котором делаем запрос и удаляем текущий обработчик. Новый ставим уже после обработки запроса.

°•Самое простое
button.onclick = function(){
   delete button.onclick;
   var xhr = new XMLHttpRequest();
   ....
   xhr.onload = function(){
         //Что-то делаем
         button.onclick = function(){
             //Выпадание меню
         }
   }
}

°•Если на кнопке есть другие обработчики
button.addEventListener("click", function one(){
   button.removeEventListener("click", one);
   var xhr = new XMLHttpRequest();
   ....
   xhr.onload = function(){
         //Что-то делаем
         button.addEventListener("click", function(){
             //Выпадание меню
         });
   }
});

°•То же самое на jQuery
$(button).one("click", function(){
   $.ajax(...).done(function(){
         //Что-то делаем
         $(button).click(function(){
             //Выпадание меню
         });
   });
});

Ответ написан
Комментировать
viphorizon
@viphorizon
.append() ? Я не понял вопрос...
Ответ написан
Комментировать
Если правильно вас понял, вот так примерно:
var resultReturned = true;
$("#button").click(function(){
   if(resultReturned===false){
     return;
   }
   $.ajax({
     url: "test.html",
     beforeSend: function() {
        resultReturned = false;
     }
    }).always(function() {
        resultReturned = true;
        //обрабатываем результат
    });
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы