javascript – 将click事件侦听器添加到具有相同类的元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 将click事件侦听器添加到具有相同类的元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1582字,纯文字阅读大概需要3分钟。
内容图文
我有一个删除id的列表视图.我想为具有特定类的所有元素添加一个监听器并执行确认警报.
我的问题是,这似乎只是将侦听器添加到它找到的类的第一个元素.我试图使用querySelectorAll但它没有用.
var deleteLink = document.querySelector('.delete');
deleteLink.addEventListener('click', function(event) {
event.preventDefault();
var choice = confirm("sure u want to delete?");
if (choice) {
return true;
}
});
列表:
<?php
while($obj=$result->fetch_object())
{
echo '<li><a class="delete" href="removeTruck.php?tid='.$obj->id.'">'.$obj->id.'</a>'
. '<a href="#" class="delete"></a>
</li>'."\n";
}
/* free result set */
$result->close();
$mysqli->close();
?>
解决方法:
您应该使用querySelectorAll.它返回NodeList,但querySelector仅返回找到的第一个元素:
var deleteLink = document.querySelectorAll('.delete');
然后你会循环:
for (var i = 0; i < deleteLink.length; i++) {
deleteLink[i].addEventListener('click', function(event) {
if (!confirm("sure u want to delete " + this.title)) {
event.preventDefault();
}
});
}
另外,只有在确认=== false时才应该使用preventDefault.
值得注意的是,return false / true仅对与onclick = function(){…}绑定的事件处理程序有用.对于addEventListening,您应该使用event.preventDefault().
演示:http://jsfiddle.net/Rc7jL/3/
ES6版本
通过使用Array.prototype.forEach迭代而不是for循环,您可以使它更清洁(更安全closure-in-loop wise):
var deleteLinks = document.querySelectorAll('.delete');
Array.from(deleteLinks).forEach(link => {
link.addEventListener('click', function(event) {
if (!confirm(`sure u want to delete ${this.title}`)) {
event.preventDefault();
}
});
});
以上示例使用ES2015标准的Array.from和template strings.
内容总结
以上是互联网集市为您收集整理的javascript – 将click事件侦听器添加到具有相同类的元素全部内容,希望文章能够帮你解决javascript – 将click事件侦听器添加到具有相同类的元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。