Identyfikator na główny jest wywoływany po kliknięciu innego przycisku zewnętrznego. Problem polega na tym, że jeśli użytkownik kliknie btn1
i szybko naciśnie ten zewnętrzny przycisk, wywoływane jest wywołanie przed procedurą obsługi zdarzeń dla btn1
. W wyniku tego popup jest ładowany po usunięciu elementu div. Czy istnieje sposób zatrzymania żądania obciążenia po kliknięciu programu obsługi zdarzeń do usunięcia? Próbowałem z jqXHR.abort()
po wywołaniu metody remove, ale to nie działa, ponieważ usuwanie jest wywoływane przed wysłaniem ajax'a.Jak zatrzymać element ładujący stronę HTML
Istnieje wiele przycisków, takich jak btn1, które wyśle zapytanie ajax do załadowania HTML i Kilka plików HTMlL dla np. a.html
załaduje niektóre pliki skryptowe, takie jak a.js
, które zostaną wykonane. A jeśli skrypt odnosi się do pewnej zmiennej, która została usunięta w remove()
, wystąpi TypeError.
<div id="base">
<div id="main">
<!-- some more HTML elements -->
<button id="btn1"></button>
</div>
<div id ="popup">
</div>
</div>
<script>
var xhr;
$("#btn1").on("click", function(){
xhr = $.ajax(
url: "a.html",
success: function(){
//do something
}),
type: "GET"
});
$("#main").on("remove", function(){
// delete all resources,etc.
xhr.abort();
});
</script>
Dlaczego nie wyłączasz zewnętrznego przycisku na btn1 i nie włączasz go w "wykonanym" wywołaniu metody ajax? –