我有一个包含BookList的MVC 5应用程序。在剃须刀视图中,通过将ISBN发送到亚马逊来显示每本书的封面:
<img id="@item._id" class="img img-responsive img-thumbnail" style="max-width: 110px" src=@string.Format("http://images.amazon.com/images/P/{0}.01.mzzzzzzz", @item.isbn)>
这些图片在foreach
循环中偏离正轨:
@foreach (var item in Model) {...}
我想要做的是,使用jquery,在弹出窗口中显示封面的放大版本。为此,我一直在寻找一个解决方案,我在网上找到了一个地方。为了让点击工作,我使用了我分配给图像的课程:
$(".img").click(function () {
if ($(this).hasClass("selected")) {
deselect();
} else {
$(this).addClass("selected");
$(".pop").slideFadeToggle(function () {
});
}
return false;
});
在此函数中,应用或删除了一个css类,它将显示或隐藏包含放大图像的div:
<div class="messagepop pop">
<img id="@item._id" class="img" src=@string.Format("http://images.amazon.com/images/P/{0}", @item.isbn)>
</div>
我面临的问题是单击图像,该类将应用于列表中.img
的所有图像,并显示所有放大的封面。我需要以某种方式识别被点击的特定图像。我认为这可以通过$(this)实现,但显然不是。
答案 0 :(得分:1)
您现在遇到的问题是因为$(this)指的是具有.img类的所有元素。因此,您没有定位调用click事件的元素。
请尝试以下代码并告诉我它是否有效。
$(".img").click(function (evt) {
var clicked = evt.target.id;
if ( $('#' + clicked).hasClass("selected") ) {
deselect();
} else {
$('#' + clicked).addClass("selected");
$('.pop #' + clicked).parent().slideFadeToggle();
}
return false;
});