开发者

Swap all images on page via multiple links JQuery

开发者 https://www.devze.com 2023-02-18 04:31 出处:网络
Ok I have this so far and it works to an extent, $(\'a\').click(function(e) { e.preventDefault(); var preFix = $(this).attr(\"href\");

Ok I have this so far and it works to an extent,

$('a').click(function(e) 
{  
   e.preventDefault();  
   var preFix = $(this).attr("href");
   $('img.swap').each(
       function() { this.src = this.src.replace('.gif', (preFix)+'.gif');
   }); 
});

This pulls through the 'HREF' link and adds it to the end of the image. The problem is when I click the first link it swaps the images just fine but the second time I click one of the 5 links the image breaks.

I'm guessing its because it is just adding the 2nd prefix at the end of t开发者_JAVA百科he first. I have tried a few things but it just ends up breakin the whole thing.

There are two things i need it to do:

1) When you click one link then another I want to to remove the old prefix and tthe new one.

2) If the same link is clicked twice I need it to firstly add the prefix then just remove the prefix.

Many Thanks


Try this: :-D

$('img.swap').each(function{
    $(this).data('current_image', this.src);
    //saves the default image in data
})
$('a').click(function(e){  
       e.preventDefault();  
       var preFix = $(this).attr("href");
       $('img.swap').each(
       function() { 
         if($(this).data('prefix') != prefix){
           this.src = $(this).data('current_image').replace('.gif', (preFix)+'.gif');
           $(this).data('prefix', prefix)
         }
         else {
           this.src = $(this).data('current_image');
           $(this).data('prefix', '')
         }
       }); 
});

$(this).data(..) stores a variable in that specific DOM element, than after doing that you can do boolean operations to chack it against the value you have :-)

It is more explained here: jQuery.data()

UPDATE

and instead of using an a (anchor) tag use something else with a className like .changeIMG:

<span class='changeIMG' postfix='-bw'>Change to black and white</span>

and with css it can look like an anchor tag:

span.changeIMG {
   cursor: pointer;
   color: blue;
   text-decoration: underline;
}

and then there is 2 changes in the code above:

$('a').click(function(e){ become $('span.changeIMG').click(function(e){
and var preFix = $(this).attr("href"); become var preFix = $(this).attr("postfix");


$("img.swap").each(function(){
     var origSrc = $(this).attr("src");
     //original src can now always be accessed
     $(this).attr("origSrc",origSrc);
});

$("a").click(function(e){
    e.preventDefault();
    var prefix = $(this).attr("href");
    $("img.swap").each(function(){
        var origSrc = $(this).attr("origSrc");
        var newSrc = origSrc.replace(".gif",prefix+".gif");
        $(this).attr("src",newSrc);
    });
});
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号