javascript - 如何只在元素集合上注册一次点击事件?
问题描述
如何只在元素集合上注册一次点击事件?
$(".UFIReplyLink").on("click", function() {
alert('bound once')
});
我试过使用.one
没有运气
var collectLinks = function() {
$(".UFIReplyLink").one("click", function() {
console.log('one...') // this will log however many seconds have passed
});
}
setInterval(collectLinks, 1000)
解决方案
您可以使用事件委托,其中事件附加到父元素并指定选择器以在子元素上执行事件。如果子元素是动态插入的,它也会执行事件。
请参阅这篇不错的文章以了解 Javascript 中解释的事件委托。
function addEvent()
{
$("#main").off("click").delegate("span", "click", function(event) {
console.log($(event.target).html())
});
}
setInterval(addEvent,1000)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main">
<span class="UFIReplyLink"> ELEMENT 1 </span>
<br>
<span class="UFIReplyLink"> ELEMENT 2 </span>
<br>
<span class="UFIReplyLink"> ELEMENT 3 </span>
<br>
<span class="UFIReplyLink"> ELEMENT 4 </span>
</div>
推荐阅读
- c# - 从 Google Storage 下载存储桶目录中的文件时出现问题
- google-cloud-platform - 谷歌我的业务图表显示为红色,此输出 REDUCE_PERCENTILE_99
- python - Pandas - 使用前几行的信息计算每一行的值?
- path - 在 envio 变量中转义 %VAR% 名称
- css - 为什么在 Safari 14+ 类似浏览器上从禁用更改为启用时,颜色 css 规则未应用于按钮元素
- c# - 如何在 C# 中更新对象内部的属性
- python - 用 Python 求解积分-微分耦合方程组
- php - 为什么我的 html 不会在我的 header.php 文件中呈现?
- laravel - laravel 电子邮件通知不是由 cron 作业发送的
- javascript - 错误:成员“feedbackFormDirective”隐含的角度为“任何”类型