我有一个包含一些字段的表单
,每个字段都绑定了一些click
事件(与此功能无关)。
我必须添加另一个到每个字段,以显示一个模态在第一次点击他们中的任何一个,并且只在第一次点击。
我想的是这样的:
$('.field').on('click',function(){
$('#modal').modal();
$('.field').off('click');
});
其思想是,在第一次单击之后,.off()
方法将从所有.field
元素中删除“click handlers”。
如果不存在其他引用的“点击处理程序”,那就太好了,因为这样我就把它们全部删除了。
我需要从所有字段中只删除这个特定的“单击处理程序”,保留其他字段,这样,模式窗口应该只在第一次单击任何表单字段时出现,而在单击下一个字段时再也不会出现。
拜托,怎么办?
创建一个函数,该函数在被调用后将自身从处理程序中删除
function showModalOnlyOnce(){
console.log("Show modal") ;
$('.field').off('click',showModalOnlyOnce);
}
并使用on
分配该值
$('.field').on('click',showModalOnlyOnce);
这不会影响其他click
处理程序,如下段所示。总是写入“Ive been clicked”消息,但“show modal”消息只显示一次
null
function showModalOnlyOnce(){
console.log("Show modal") ;
$('.field').off('click',showModalOnlyOnce);
}
$('.field').on('click',function(){
console.log("Ive been clicked");
});
$('.field').on('click',showModalOnlyOnce);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="field">
<input type="text" class="field">
<input type="text" class="field">
<input type="text" class="field">