Not having a test for Chap3 was a typo.  That last if should be
adjusted accordingly.

Klaus-

I don't want to use .remote, because I only want to make the ajax call
once.  If the content we expect to be there isn't there, then I want
to load it.  If, however, we've already loaded it, I just want to re-
show the div that contains it, not hit the server again (the data I'm
getting is large and takes some time to generate.  As the content is
not something likely to change in a few minutes, the solution I've
come up with is sufficient in that regard).  I already have this
functionality working flawlessly.  All I really need to do is that
when the back button is hit, div#2 gets hidden and div#1 is shown,
and, if someone hits forward from that point, then div#1 is hidden and
div#2 is shown.  This is working, too, except for what appears to be a
double call to $.get.

When I do something similar to the demo, the links with the #something
get added.  I don't want to log every single link that gets clicked
(they expand tables, adjust which divs get shown, etc).  This is why I
just have the call to initialize, to add the ability to swap the
visibility of the divs when they go back to the base url.

I don't understand though why it is appearing to call my $.get twice.
Is it because when the link with the # is clicked and put in the
history the plugin is executing the $.get as well?  This seems odd,
since I have neither any $.history or $.remote calls in my script.  I
would change my .click to a .history, except that I have a table of
links that could be selected, and I need to know which link was
clicked, because I need to grab info from the link for the resulting
call.

There must be a way to do this?

On Oct 7, 2:36 am, Klaus Hartl <[EMAIL PROTECTED]> wrote:
> History/Remote is not supposed to work that way. Although the hash is
> changing correctly it will not work in IE for example. You need to
> explicitly tell the history manager which links add to history. Just
> have a look at the demo. For pure Ajax loading links that is the
> remote method. In your case
>
> $('a.testing').remote('#div2', function() {
>     //callback
>
> });
>
> $.ajaxHistory.initialize();
>
> The show/hide of div1/div2 looks to me like a workaround you don't
> need but I'm not sure.
>
> --Klaus
>
> On 6 Okt., 22:52, Leanan <[EMAIL PROTECTED]> wrote:
>
> > Klaus,
>
> > I've created a demo that exhibits this behavior.  I modified your demo
> > that is included with the script athttp://www.stilbuero.de/jquery/history/
>
> > All you should have to do is change your index.html to be the
> > following:
>
> > <html lang="en">
> >   <head>
> >       <meta http-equiv="Content-Type" content="text/html;
> > charset=utf-8">
> >       <meta http-equiv="Content-Style-Type" content="text/css">
> >       <meta http-equiv="Content-Script-Type" content="text/
> > javascript">
> >       <title>jQuery history/remote - solution for hijaxing links</
> > title>
> >       <script src="jquery-1.1.3.1.pack.js" type="text/javascript"></
> > script>
> >       <script src="jquery.history_remote.js" type="text/javascript"></
> > script>
> >   </head>
> >   <body>
>
> >     <div id="div1">
> >       <a href="#test1" class="testing" id="Chap1">Test Chap1</a><br>
> >       <a href="#test2" class="testing" id="Chap2">Test Chap2</a><br>
> >       <a href="#test3" class="testing" id="Chap3">Test Chap3</a><br>
> >     </div>
>
> >     <div id="div2"> </div>
> >     <script type="text/javascript">
> >       $(document).ready(function() {
> >         $.ajaxHistory.initialize(function() {
> >           $('#div1').show();
> >           $('#div2').hide();
> >         });
>
> >         $('.testing').click(function() {
> >           if ($(this).attr('id') == "Chap1") {
> >             $.get('chapter-1.html', function(data) {
> >               $('#div2').append(data);
> >               $('#div1').hide();
> >               $('#div2').show();
> >             });
> >           }
> >           if ($(this).attr('id') == "Chap2") {
> >             $.get('chapter-2.html', function(data) {
> >               $('#div2').append(data);
> >               $('#div1').hide();
> >               $('#div2').show();
> >             });
> >           }
> >           if ($(this).attr('id') == "Chap1") {
> >             $.get('chapter-1.html', function(data) {
> >               $('#div2').append(data);
> >               $('#div1').hide();
> >               $('#div2').show();
> >             });
> >           }
> >         });
> >       });
> >     </script>
> >   </body>
> > </html>
>
> > You should notice that every time you click on the Test links, you
> > will actually get the html page twice instead of once.

Reply via email to