JavaScript
function productBox(event){
event.stopPropagation();
console.log(event.target);
}
var product = document.getElementsByClassName('product');
for (var g = 0, length = product.length; g < length; g++){
console.log('here');
product[g].addEventListener('click',productBox);
}
HTML
<div class="product">
<div class="productContent">
<img src="file:///C|/Users/Jacob/Downloads/12939681_1597112303636437_733183642_n.png" />
</div>
<div class="productName">
Here
</div>
<div class="productDescription">
</div>
问题在于当点击产品元素时,事件目标返回的是事件监听器的实际子元素。例如,我点击“产品”,它将返回productContent,productName或productDescription作为目标,但实际上我想要的是“产品”元素,然后执行.childNodes并在其中查找图像。
请注意,jQuery不是一个选项,因为它是30kb的东西,我不会用它,因为这是一个几乎没有任何javascript的静态html页面。
我想也许可以进行以下操作,
检查元素是否为“产品”,如果不是,则获取其父元素并检查其是否为“产品”,如果不是则继续向上寻找父元素,以此类推。然后在其中查找img标签。但我觉得那是一个冗长的解决方法。
有什么想法吗?
this
给你绑定的元素。 - user1106925this
可以工作。完全忘记了this
是在调用它的地方而不是定义它的地方。想把它作为答案放上去,这样我就可以接受了吗? - user3940738