元素出现后调用单击事件一次
Call Click Event Once After Element Appears?
我使用 jQuery 1.6.2。当该元素出现在页面上时,我想只调用一次单击事件。这是我的选择器:
span[resizer='north'][title=''] :first-child"
这可以用于触发点击事件:
$("span[resizer='north'][title=''] :first-child").click();
如何使其仅在该元素出现在页面上后工作一次或工作?
根据我对您的最后一条评论的理解回答:我的意思是我只会调用一次点击事件。假设有一个按钮。我将调用该按钮的单击事件一次。我的意思是我将以编程方式单击该按钮。
$('button').click(function() {
$('span[resizer='north'][title='']:first-child').click();
$(this).unbind('click');
});
您可以使用
DOMNodeInserted
事件来检测何时动态插入新元素。
var alreadyclicked = false; // variable to check that it will be clicked just once
$(document).bind('DOMNodeInserted', function(e) {
if (!alreadyclicked){
$("span[resizer='north'][title=''] :first-child").click();
alreadyclicked = true;
}
});
更新
DOMNodeInserted
事件与其他突变事件一起被弃用。一些浏览器支持它,但看起来这不会持续很长时间。
您可以改用突变观察器来跟踪 DOM 中的更改
var alreadyclicked = false;
var observer = new MutationObserver(function(mutations, observer){
//if new nodes were added
if( mutations[0].addedNodes.length && !alreadyclicked )
$("span[resizer='north'][title=''] :first-child").click();
alreadyclicked = true;
});
observer.observe( document, { childList:true, subtree:true });
使用自定义事件,并使用 .one() 附加委托处理程序。
事件有 2 个组件,即触发和处理。 不要关注它被触发了多少次,专注于它被处理了多少次。
$("document").one("myclick", "span[resizer='north'][title=''] :first-child", function(e) {
do something...;
$(this).click(); //if you actually need the "click"
});
$("span[resizer='north'][title=''] :first-child").trigger("myclick");
此示例将意味着它被"处理"一次。 此处的其他答案可用于确保在添加元素时触发它(如果它在文档准备就绪之后)。
您也可以使用发布/订阅,这将使它更加容易。 然后,您只需从 ajax 或任何将添加元素的代码触发自定义事件,而不必担心专门针对元素。 订阅中的最后一行代码是取消订阅。
相关文章:
- 主干模型更改事件只触发一次
- 如何检测滚动事件是否像在触摸设备上一样只触发一次
- 在单击事件中,第一次单击时激发代码一次,其余代码在所有单击时运行
- 简单的onclick事件只起过一次作用
- 一次点击,两次'单击'事件已启动
- Javascript事件发射器一次处理多个事件
- jQuery单击事件在一次之后不会触发
- JQuery只检查了一次事件工作
- 只为构造函数的所有实例触发一次事件侦听器
- 如何只调用一次事件处理程序,而不是每次单击项目时调用事件处理程序
- 在鼠标悬停时添加事件,如何只添加一次事件
- 每 60 秒仅启动一次事件 (JavaScript)
- 主干分组依据集合仅在一次事件单击后呈现
- 在没有jquery的情况下只执行一次事件侦听器函数
- 如何在Javascript中只执行一次事件处理程序
- jquery只在静态和动态元素上触发一次事件
- 在获得一次事件后删除ng单击事件
- HTML5 -视频播放时每隔几秒触发一次事件
- 为多个控件注册一次事件处理程序-是否可能
- 只运行一次事件