1

我正在尝试用 jQuery 做一个简单的任务:我有一个单词列表,当悬停时,应该在其相应的图像中淡入淡出。例如:

<a href="#" class="yellow">Yellow</a>
<a href="#" class="blue">Blue</a>
<a href="#" class="green">Green</a>

<img src="yellow.jpg" class="yellow">
<img src="blue.jpg" class="blue">
<img src="green.jpg" class="green">

我目前正在为每个链接/图像这样做:

$('a.yellow').hover(
  function () {
    $('img.yellow').fadeIn('fast');
    },
    function () {
     $('img.yellow').fadeOut('fast');
     });

上面的方法效果很好,但我还在学习,我想有更好的方法来做到这一点,而不是重复功能。

任何人都可以在这里给我一些启示吗?如何改进此代码?

4

2 回答 2

4
<a href="#" class="yellow" data-type="color">Yellow</a>
<a href="#" class="blue" data-type="color">Blue</a>
<a href="#" class="green" data-type="color">Green</a>

jQuery 代码

$('a[data-type=color]').hover(
  function () {
    $('img.'+$(this).attr("class")).fadeIn('fast');
    },
    function () {
     $('img.'+$(this).attr("class")).fadeOut('fast');
     });
});

我想你应该试试这个。我用作data-自定义属性的前缀,因为它符合 html5。data-something如果你愿意,你可以说。

通常你可能不需要使用 data-color 自定义属性,但因为我认为让它更通用,我使用了该属性。你也可以做这样的代码:

<a href="#" class="yellow">Yellow</a>
<a href="#" class="blue">Blue</a>
<a href="#" class="green">Green</a>

然后

$('a').hover(
  function () {
    $('img.'+$(this).attr("class")).fadeIn('fast');
    },
    function () {
     $('img.'+$(this).attr("class")).fadeOut('fast');
     });
});

但是这样,您应该确保所有链接都是与图像相关的链接。

于 2010-04-12T21:06:50.923 回答
2
<a href="#" id="yellow" class="colorLink">Yellow</a>
<a href="#" id="blue" class="colorLink">Blue</a>
<a href="#" id="green" class="colorLink">Green</a>

<img src="yellow.jpg" class="yellow">
<img src="blue.jpg" class="blue">
<img src="green.jpg" class="green">

$("a.colorLink").hover(
    function(){
        $("img."+this.id).fadeIn('fast');
    },
    function(){
        $("img."+this.id).fadeOut('fast');
    }
);

这将为与图像对应的每个链接设置一个唯一的 ID。

于 2010-04-12T21:08:47.253 回答