我目前正在努力使用jQuery .one()
。文档说明
每个事件类型的每个元素最多执行一次处理程序。
如果我有三个输入并像https://jsfiddle.net/rr49ryyo/那样执行$(document).one("click", "input", function () { ... }
之类的操作,我希望如果我点击所有3个输入,该事件会被触发3次,但事实上,它只会被触发总共一次而不是每个元素一次。这是一个错误还是我做错了什么?
.one
附加处理程序, $("input").one("click", function () { ... }
的行为与预期一样,但我的问题是我需要响应动态添加的输入触发的事件。我怎么能这样做?
答案 0 :(得分:0)
问题在于,当您使用$(document).one(...)
时,它实际上在文档上设置了一个侦听器,当后代input
元素是事件的目标时触发,并在被触发一次后被删除。 / p>
使用$('input').one(...)
,它会在每个输入元素上设置一个侦听器,每个输入元素在触发时都会被删除。
编辑:您可以通过查看@ Phil的评论链接Is there any way to delegate the event one in jQuery?
来解决这个问题解决方案:
https://stackoverflow.com/a/6873265/1059070
$('#container').delegate('.children', 'click', function() { if($(this).data('clicked')) { return; } // ... your code here ... $(this).data('clicked', true); });