Hey all,

First post to the group!  I am trying to display a spinner on images
that are loading, which works.  I wanted the loader to be degrade
properly if javascript was disabled, which is why i replace the image
with the loading div and then reinsert the image.

The problem with that is that on fast connections, the image actually
loads, then i delete it, and replace it with a loading div, and then
reinsert the image after it reloads.. which doesnt look so nice.

So.. I tried creating a hash table of loaded images using this snippet
below inside of $(document).ready(fn):
                                        jQuery(this).load(function(){
                                                
loadedImages[originalImageSource] = true;
                                                alert(originalImageSource);
                                        });
but it never gets called?

Any ideas what I am doing wrong?

Appreciate the response, my full code is below!

- Bryan

-------------------------------------
if( typeof( EXPLOREMARK_BLOG ) === 'undefined') {
                EXPLOREMARK_BLOG = {};
        }

        EXPLOREMARK_BLOG = {
                setup: function() {
                        jQuery(document).ready( function() {
                                //***Start Post Image Pagination
                                var postImagePagination = 
jQuery('.postImagePagination
ul.pagination li a');
                                var loadedImages = {};

                                //unhide all the hidden paginations
                                jQuery('div.postImagePagination 
ul.pagination').css
('display','block');

                                jQuery('div.postImagePagination ul.images li 
img').each(function()
{

                                        var originalImageSource = 
jQuery(this).attr('src');
                                        var img = new Image();
                                        var parent = jQuery(this).parent();
                                        var width = jQuery(this).width();
                                        var height = jQuery(this).height();
                                        jQuery(this).load(function(){
                                                
loadedImages[originalImageSource] = true;
                                                alert(originalImageSource);
                                        });
                                        if 
(typeof(loadedImages[originalImageSource]) === 'undefined') {
                                                jQuery(this).after('<div 
class="loading"></div>').remove();
                                                jQuery(img).load(function(){
                                                        
jQuery(this).css('display', 'none'); // .hide() doesn't work in
Safari when the element isn't on the DOM already
                                                        parent.append(this);
                                                        
parent.children().eq(0).remove();
                                                        jQuery(this).fadeIn();
                                                }).error(function(){
                                                // notify the user that the 
image could not be loaded
                                                }).attr('src', 
originalImageSource);
                                        } else {
                                                alert('loaded already ' + 
originalImageSource);
                                        }
                                });

                                //if a .pagination link is clicked,
                                //show the previous li with the same number as 
the current li
inside of the current postImagePag

                                postImagePagination.click( function() {
                                        //select li children of the grandparent 
ul of the current clicked
a href
                                        var currentPaginationList = 
jQuery(this).closest('ul').children
();
                                        //index of current li
                                        var index = 
currentPaginationList.index(jQuery(this).parent());
                                        //select the ul.images of the current 
.postImagePagination div
                                        var currentImageList = 
jQuery(this).closest
('.postImagePagination').find('ul.images li');
                                        //set all images inactive
                                        
currentImageList.removeClass('active').addClass('inactive');
                                        //set the image with the same index of 
the li to active
                                        
currentImageList.eq(index).removeClass('inactive').addClass
('active');
                                        //remove the activeLink class from all 
a href elements in the
current pagination list
                                        jQuery(this).closest('ul').find('li 
a').removeClass
('activeLink');
                                        //add activeLink class to the current 
clicked link
                                        jQuery(this).addClass('activeLink');
                                });


                                //***End Post Image Pagination
                        });
                }()
        };

Reply via email to