JQuery 监听多个事件,但只触发一次

标签 jquery events

如何监听多个事件,例如更改和输入,但一次仅触发一个事件。

示例:

  • 输入时:触发输入事件而不进行更改
  • 更改时:无需输入即可触发更改事件

使用此代码来监听事件,但在输入时会触发两次。

演示:

https://jsfiddle.net/h6sny738/2/

$(document).on("change input", '.test', function(event) {
  console.log("test");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<input class="test">

最佳答案

为您的函数命名并为不同的目标附加不同的监听器:

var myFunc = function(event) {
  console.log('test', event.type, event.target.tagName);
};

$(document)
  .on('change', 'select.test', myFunc)
  .on('input', 'input.test', myFunc);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<input class="test">
<select class="test">
  <option>1</option>
  <option>2</option>
</select>

关于JQuery 监听多个事件,但只触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58215318/

相关文章:

javascript - 我想根据正则表达式和条件为 HTML 表格行着色

javascript - 如何将 DOM 与附加事件一起保存?

jquery - jQuery 中是否存在/加载任何元素?

jquery - 使用 jQuery 切换属性标题更改

javascript - 我如何使用 jquery-template 选择一个选项

C# 语言设计 : explicit interface implementation of an event

javascript - 在不丢失事件监听器的情况下克隆Node

Angular 2 : Can focusin and focusout be in one event?

objective-c - 如何在一个 UIToolBar 上添加第二行 UIBarButtonItems 以及如何在 UIBarButtonItem\UIButton 的某个具体位置处理单击事件?

jquery - 可排序和可删除 : CSS preventing jquery-ui sortable to drag around the dropped items