jQuery-悬停在动态创建的元素setTimeout上
jQuery - hover on dynamically created element setTimeout
我试图在悬停一秒钟后触发一个操作(元素是动态创建的),如果光标被移出,我想设置Timeout=null;
$("nav").on("mouseover", ".dropDown ul li", function (ev) {
var id = ev.target.id,
timeoutId = null;
$("#" + id).hover(function () {
if (timeoutId === null) {
timeoutId = window.setTimeout(function () {
timeoutId = null;
alert(id);
}, 1000);
}
},
function () {
if (timeoutId !== null) {
window.clearTimeout(timeoutId);
timeoutId = null;
}
})
});
您尝试注册动态悬停处理程序的方式是错误的,您可以将事件委派与mouseenter
和鼠标保存事件(如)一起使用
$("nav").on({
mouseenter: function (ev) {
var $this = $(this);
var timeoutId = window.setTimeout(function () {
console.log($this.attr('id'));
$this.removeData('timeoutId');
}, 1000);
$this.data('timeoutId', timeoutId);
},
mouseleave: function (ev) {
var $this = $(this),
timeoutId = $this.data('timeoutId');;
$this.removeData('timeoutId');
clearTimeout(timeoutId);
}
}, ".dropDown ul li");
$("nav").on({
mouseenter: function(ev) {
var $this = $(this);
var timeoutId = window.setTimeout(function() {
$this.removeData('timeoutId');
//do your stuff here
console.log($this.attr('id'));
}, 1000);
$this.data('timeoutId', timeoutId);
},
mouseleave: function(ev) {
var $this = $(this),
timeoutId = $this.data('timeoutId');;
$this.removeData('timeoutId');
clearTimeout(timeoutId);
}
}, ".dropDown ul li");
//add more dynamic items
for (var i = 4; i < 7; i++) {
$('<li />', {
id: i,
text: i
}).appendTo('ul')
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<nav>
<div class="dropDown">
<ul>
<li id="1">1</li>
<li id="2">2</li>
<li id="3">3</li>
</ul>
</div>
</nav>
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- javascript在html元素方法运行setTimeout后返回此消息
- 使用setTimeout在创建新元素之间强制延迟
- jQuery-悬停在动态创建的元素setTimeout上
- 如何使用 SetTimeout,根据动态追加时间删除动态追加的元素
- 为特定的 DOM 元素运行 setTimeout()
- 似乎无法影响嵌套 setTimeout 中的输入元素属性
- 使用setTimeout隐藏/显示延迟后的元素
- 在Javascript中调用没有元素ID的setTimeout
- jQuery setTimeout $this.remove() 多个元素的重叠
- 使用setTimeout函数&随机函数.以设置类元素的动画
- 闭包在Javascript中使用setTimeout设置元素类
- 我想根据它们的时间和持续时间显示json中的元素,并且间隔被settimeout打断
- 使用setTimeout在X秒后隐藏几个元素
- 将setTimeOut绑定到具有特定元素的某个函数
- 在PhantomJS中等待一个没有setTimeout的元素
- 设置元素'时,Successive.setTimeouts跳过.setTimeout的中间实例;s的文本多次使用
- 如何将 DOM 元素链接到 setTimeout
- foreach元素的setTimeout不工作
- setTimeout设置为addClass,然后检查元素是否为hasClass