0

This is a script that, when a link is clicked, will pull a page from somewhere and insert it in a div in the current page. Pretty simple, yes, but being the thick head I seem to be, I can't figure out how to implement it.

i.e. how can I formulate the link so that it will point the script to the page I want to load in the div I want?

The script:

$(document).ready(function() {  

    // Check for hash value in URL  
    var hash = window.location.hash.substr(1);  
    var href = $('#nav li a').each(function(){  
        var href = $(this).attr('href');  
        if(hash==href.substr(0,href.length-5)){  
            var toLoad = hash+'.html #content';  
            $('#content').load(toLoad)  
        }   
    });  

    $('#nav li a').click(function(){  

    var toLoad = $(this).attr('href')+' #content';  
    $('#content').hide('fast',loadContent);  
    $('#load').remove();  
    $('#wrapper').append('<span id="load">LOADING...</span>');  
    $('#load').fadeIn('normal');  
    window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);  
    function loadContent() {  
        $('#content').load(toLoad,'',showNewContent())  
    }  
    function showNewContent() {  
        $('#content').show('normal',hideLoader());  
    }  
    function hideLoader() {  
        $('#load').fadeOut('normal');  
    }  
    return false;

    });
});

The instructions specify the following:

  1. We want to target the links within the navigation menu and run a function when they are clicked:

    $('#nav li a').click(function() {  
        // function here  
    });
    
  2. We need to define what page to get the data from when a link is clicked on:

    var toLoad = $(this).attr('href')+' #content';
    
  3. The loadContent function calls the requested page:

    function loadContent() {  
        $('#content').load(toLoad,'',showNewContent)  
    }
    

It's very likely that the above is all that's needed to run the script as intended but only if you know how to do it, which I don't.

PS: The tutorial all this comes from is here.

1 Answer 1

3

Basically intercept all link clicks and make an AJAX request instead... Remember to return false at the end of the click callback function.

$('a').click(function () {
  var href = $(this).attr('href');
  $.ajax({
    url: href,
    success: function (res) {
      $(res).appendTo('#target'); // add the requested HTML to #target
    }
  });
  return false; // important
});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.