jquery - 对集合中的所有项目仅触发一次单击

标签 jquery

我有一个包含许多字段的表单,我需要单击其中任何一个字段来触发模式。 对于每个整个表单,这种情况应该只发生一次,与单击哪个字段无关。

假设每个字段都由CSS类.form-control标识,我尝试使用jQuery .one()方法,这样:

$('.form-control').one('click',function(){
   $('#modal').modal();
});

这几乎运行正确,因为它肯定只在我第一次单击每个字段时打开模式,但如果我单击另一个字段,它会再次打开模式,这不是所需要的。

这里是working example有一个简单的示例,为了简单起见,我打开一个警报而不是模式。如果您单击第一个字段,则会打开警报,接下来单击同一字段不会执行任何操作(正确),但单击第二个字段会再次触发它,这不是我需要的。

请问,如何限制模态打开仅限于首次单击任何字段?

最佳答案

您可以使用 jQuery off 删除事件处理程序方法,例如

$(function() {
  $('.form-control').on('click', function() {
    console.log('ok');
    $('.form-control').off('click');
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input class="form-control">
  <input class="form-control">
</form>

关于jquery - 对集合中的所有项目仅触发一次单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62466137/

相关文章:

javascript - 使用随机背景颜色更新多个类

javascript - Bootstrap 3 scrollspy 更改 div 类

javascript - jquery:firefox 找不到 id 标签,但 safari 可以?

jquery - 在 .get 中使用 $(this) 在 jQuery 中是未定义的

javascript - 默认情况下是 init.apply 和 methods[method].apply javascript 行

javascript - CSS下拉菜单出现动画

javascript - ajax 表单无法正常工作

javascript - Colorbox scalePhotos 不工作

javascript - 在共享主机上托管 laravel 5 应用程序 : getting js error "tinymce is not defined"

javascript - 将输入的数字相除并打印结果