这个问题来自几天前我回答的问题here。我跟进了今天的问题,但不幸的是我还没有回答,我不知道该怎么做。在无序列表中增加可点击的图像区域
document.addEventListener("click", function(e) {
var target = e.target;
// If not one of the `li` items, ignore it
if (!target.tagName.toLowerCase() === "li") {
return;
}
// If it doesn't have a data-src, ignore it
var newSrc = target.getAttribute("data-src");
if (!newSrc) {
return;
}
// IN this case, we know exactly how the DOM is layed out
// and that the parent we want is two levels up.
// Looping through this is sometimes a better idea.
var parentDiv = target.parentNode.parentNode.parentNode;
var img = parentDiv.getElementsByTagName("img")[0];
console.log(img);
img.src = newSrc;
});
.colours {
background-color: #f5f5f5;
}
ul {
\t list-style: none;
}
li {
display: inline;
}
li img {
\t height: 50px;
border-radius: 25px;
}
<div class="main-img">
<img src="http://i.imgur.com/DxkuRlE.jpg" height="50%" width="50%">
</div>
<div class="colours">
<ul>
<li data-src="http://i.imgur.com/DxkuRlE.jpg"><img src="http://i.imgur.com/doLMeIi.jpg"></li>
<li data-src="http://i.imgur.com/fnWJNDi.jpg"><img src="http://i.imgur.com/GcGpWy5.jpg"></li>
<li data-src="http://i.imgur.com/xt6cysI.jpg"><img src="http://i.imgur.com/AWCzo9N.jpg"></li>
<li data-src="http://i.imgur.com/GEcT7Hn.jpg"><img src="http://i.imgur.com/yTeF0qu.jpg"></li>
<li data-src="http://i.imgur.com/iWRara7.jpg"><img src="http://i.imgur.com/i35OBvT.jpg"></li>
</ul>
<ul>
<li data-src="http://i.imgur.com/OgbJcRe.jpg">"Red"</li>
<li data-src="http://i.imgur.com/duO7fk0.jpg">"Grey/White"</li>
<li data-src="http://i.imgur.com/j74Up5A.jpg">"Green"</li>
<li data-src="http://i.imgur.com/kjFduEb.jpg">"Black"</li>
<li data-src="http://i.imgur.com/jHaxFe7.jpg">"Off White"</li>
</ul>
通过单击颜色它应该改变主图像。在第一行中,我使用图像作为列表项。它似乎“覆盖”可点击区域。我必须点击图像外部(左下角或右下角)才能更改主图像。
鉴于在第二行只使用文本而不是图像,所有这些都是可点击的,并继续更改主图像。
我的问题如下,如何增加图片的可点击面积或以某种方式停止图片“覆盖”可点击区域?
这fiddle显示我试图实现的代码。
谢谢,杰吉。
我可以使用jQuery JavaScript的一部分吗? – Alex
是的,我对任何事情都开放! – aJaggySnake
检查[this](https://jsfiddle.net/alireza_safian/p8dcaqmn/6/) – Alex