[英]add OnClick event on a div
我正在尝试添加一个 div 中的按钮事件。
HTML:
<template id="modele-panier" type="text/AhuntsicModele">
<div class="dialog-item">
<table>
<tr>
<td>
<img src={cheminImage} alt="">
</td>
<td>
<h2>Article : {libelleProduit}</h2>
<p>Qte : {qteProduit} prix : {prixProduit}$</p>
</td>
<div class="supp">
<td>
<a href="#" id="{libelleProduit}">Supprimer </a>
</td>
</div>
</tr>
</table>
</div>
</template>
控制器.js
document.addEventListener('click', function (e) {
if (e.target && e.target.matches('button')) {
controleur.ajouterPanier(e.target.id);
} else if (e.target && e.target.matches('#main')) {
controleur.loadCatalogue();
} else if (e.target && e.target.matches('#getBMW')) {
controleur.loadBMW();
} else if (e.target && e.target.matches('#getAudi')) {
controleur.loadAudi();
} else if (e.target && e.target.matches('#getMercedes')) {
controleur.loadMercedes();
} else if (e.target && e.target.matches('#icone_compte')) {
controleur.creationCompte();
} // THIS EVENT RIGHT HERE :
else if (event.target.matches('supp')) {
alert(e.target.id)
controleur.supprimerItem();
}
});
我无法将事件添加到 div class 支持所有其他工作正常,因为我没有为其他事件使用 div class。 谢谢
如果我理解正确,您希望您的 controller 逻辑使用supp
class 检测和处理元素上的点击事件。
为了通过对代码的最小更改来实现这一点,您可以通过classList
接口执行以下操作:
document.addEventListener('click', function(e) { /* Existing code removed for bervity */ /* Use classList.contains method to check if target element has supp class */ if (event.target.classList.contains('supp')) { alert(e.target.id) controleur.supprimerItem(); } });
<table> <tr> <td><img src="https://via.placeholder.com/150" alt=""></td> <td> <h2>Article: {libelleProduit}</h2> <p>Qte: {qteProduit} prix: {prixProduit}$</p> </td> <div class="supp"> <td><a href="#" id="foo">Supprimer </a></td> </div> </tr> </table>
我假设点击处理程序的目标是动态添加到 DOM 的元素(这就是为什么您在点击处理程序内部运行 if/else if 检查的原因?) - 这种逻辑的另一种方法可能会给您一个更多的灵活性是通过类似 CSS 的选择器和querySelector()
方法查询 DOM:
document.addEventListener('click', function(e) { /* Existing code removed for bervity */ /* Query document during click for first.supp relative to table */ const suppDiv = document.querySelector("table.supp") if(suppDiv) { alert('clicked.supp') } });
<table> <tr> <td><img src="https://via.placeholder.com/150" alt=""></td> <td> <h2>Article: {libelleProduit}</h2> <p>Qte: {qteProduit} prix: {prixProduit}$</p> </td> <div class="supp"> <td><a href="#" id="foo">Supprimer </a></td> </div> </tr> </table>
希望有帮助!
你可以用这个
const div = document.getElementsByClassName("supp");
else if (div[0]!=undefined) {
alert(e.target.id)
controleur.supprimerItem();
}
希望能帮助到你
您正在尝试使用 function 参数event
,在您的 function 中未调用该参数。 您在 function 中命名了参数e
。
此外, .matches()
检查元素是否通常基于选择器字符串作为目标。 这是您通常使用document.querySelector()
来定位元素的方法。 所以supp
应该改为.supp
。
因此,当您将代码更改为:
} else if (e.target.matches('.supp')) {
controleur.supprimerItem();
}
甚至:
} else if (e.target && e.target.matches('.supp')) {
controleur.supprimerItem();
}
就像您的 if 语句的 rest 一样。
这是一个片段,显示此代码应按预期工作:
document.addEventListener("click", function (e) { if (e.target && e.target.matches(".supp")) { alert("It works"); } });
.supp { width: 100px; height: 100px; background-color: blue; color: white; display: flex; justify-content: center; align-items: center; cursor: pointer; }
<div class="supp">Click me</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.