TypeError:this.attr不是类悬停时的函数

问题描述 投票:1回答:3

因此,我有几个图像,并且我希望它们的src在鼠标悬停时显示在另一个图像上,然后在不再悬停时将其重置为原始图像。我以为我只用$(this),但我得到

TypeError:this.attr不是函数

$(".card").hover(
function () {
    var image = $(this.attr('src'));
    $('.cardpreview').attr('src', $(this.attr('src')));
},

function () {
    $('.cardpreviw').attr('src', 'http://mtgimage.com/card/cardback.jpg');
});
.card {
    width:120px;
    height:170px;
}
.cardpreview {
    width:480px;
    height:680px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<img class="card" alt="card missing" src="http://mtgimage.com/card/cardback.jpg" />
<img class="card" alt="card missing" src="http://mtgimage.com/card/cardback.jpg" />
<img class="card" alt="card missing" src="http://mtgimage.com/card/cardback.jpg" />
<img class="card" alt="card missing" src="http://mtgimage.com/card/cardback.jpg" />
<img class="card" alt="card missing" src="http://mtgimage.com/card/cardback.jpg" />
<img class='cardpreview' alt='card missing' src='http://mtgimage.com/card/Craw Wurm.jpg' />

我认为语法可能是错误的,但是这个主意很好。有人可以帮我吗?

javascript jquery hover this
3个回答
5
投票

this是本机DOMElement。它没有attr()属性。您需要使用$(this)将其转换为jQuery对象,以访问jQuery属性和方法。试试这个:

$(".card").hover(function () {
  $('.cardpreview').attr('src', $(this).attr('src'));
}, function () {
  $('.cardpreview').attr('src', 'http://mtgimage.com/card/cardback.jpg');
});

注意,我也固定了第二个.cardpreview选择器中的错字。


2
投票

是,这是语法错误。要访问当前元素,您必须使用此语法(例如,获取元素的特定属性):

$(this).attr('src');

而不是

$(this.attr('src'));

0
投票

删除第二个函数调用并尝试此操作

$(".card").on('hover',function(){
        var image = $(this).attr('src');
        $('.cardpreview').attr('src', $(this).attr('src');
        $('.cardpreviw').attr('src', 'http://mtgimage.com/card/cardback.jpg');
    });
© www.soinside.com 2019 - 2024. All rights reserved.