I am creating a jQuery Mobile web app, which loads some pages.
For example, a.html
is my main page. It may call b1.html
,b2.html
,...,b100.html
(User may click on one of buttons). (The pages are loading with ajax navigation feature of jQuery Mobile)
And there is some events in each b[i].html
page, and id
s and many things are same in every b[i].html
page. But the point is, at any time, just one of them may be in DOM. So there will be no id
conflicts or such.
The problem
The problem is the conflict of the events. When user come back to a.html
from b[i].html
, the HTML will be removed, but events will remain. This will cause many problems if I first go to b[i].html
, and then come back to a.html
and then go to b[j].html
. I mean, b[j].html
will not work correctly... :(
What I have tried
I have putted this in a.html
, to remove all events:
$("#mainpage").off("pagebeforeshow").on("pagebeforeshow",function() {
$("*").not("#mainpage").off();
//Other initialization codes...
});
But, problem not solved...
(mainpage
is the id of data-role="page"
of a.html
)
Example
For example, I have this in each b[i].html
:
$(window).resize(function () {
alert("Resized");
});
At the beginning (in a.html
), If I resize the window, there will be no alerts, but after visiting b[i].html
and then coming back to a.html
, I'll see alerts if I resize the window, even with that line of code (What I have tried part.)...
So, How to remove those event handlers when users come back to a.html
from b[i].html
?