通过多个链接 JQuery 交换页面上的所有图像

发布于 2024-10-22 13:50:02 字数 518 浏览 4 评论 0原文

好的,到目前为止我已经做到了,它在一定程度上有效,

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

这会拉出“HREF”链接并将其添加到图像的末尾。问题是,当我单击第一个链接时,它会很好地交换图像,但第二次单击 5 个链接中的一个时,图像会损坏。

我猜测是因为它只是在第一个前缀的末尾添加了第二个前缀。我尝试了一些事情,但最终却破坏了整个事情。

我需要它做两件事:

1)当您单击一个链接然后单击另一个链接时,我想删除旧的前缀和新的前缀。

2)如果同一个链接被单击两次,我需要它首先添加前缀,然后删除前缀。

非常感谢

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 the 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぃ双果 2024-10-29 13:50:02

试试这个: :-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(..) 在特定的 DOM 元素中存储一个变量,然后你可以执行布尔操作来对照你拥有的值来检查它: -)

这里有更多解释:
jQuery.data()

UPDATE

而不是使用 a (锚)标记使用其他带有类名的东西,如 .changeIMG:

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

并且使用 css 它可以看起来像锚标记:

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

然后上面的代码中有 2 个更改:

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

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");

心安伴我暖 2024-10-29 13:50:02
$("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);
    });
});
$("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);
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文