jQuery - 如何将事件绑定到元素并防止它们发生冲突,以免它们相互撤消?

时间:2017-11-17 06:16:00

标签: jquery bind addeventlistener mousemove unbind

我正在制定一个时间表,我遇到了一个有趣的问题,似乎无法通过将事件组合成单个任务来解决。请参阅下面的标记。

我的目标是在触发mousemove&之后阻止mousedown事件解除悬停mousemove事件的绑定。 mousemove事件。是否有其他事件类型可以帮助绕过此问题?

注意***事件在发生mouseout事件后绑定,如果在mousedown事件结束后鼠标停留在悬停区域内,则会看到事件停止触发。



var tl = $('#timeline');

tl.hover(function(){
	$(this).mousemove(function(e){
		console('hovering mouse moving : ' +e.pageX)
	});
}).mouseout(function(){
	$(this).unbind('mousemove');
});

// Timeline Mouse Down Event
tl.mousedown(function(e){
	$(this).mousemove(function(e){
		console('mousedown moving')
	});
}).mouseup(function(){
	$(this).unbind('mousemove');
}).mouseout(function(){
	$(this).unbind('mousemove');
});

function console(txt){
  $('#console').html(txt);
}

#timeline {height:100px;width:100%;background-color:#333;}
#console {border: 1px solid #333;padding:0.5em;}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
<div id='timeline'></div>
<br>
<div id='console'>Log</div>
</body>
</html>
&#13;
&#13;
&#13;

我应该合并这样的事件吗?或者像上面的例子一样离开?

&#13;
&#13;
var tl = $('#timeline');

tl.hover(function(){
	$(this).mousemove(function(e){
		// task runs here
	}).mouseout(function(){
	  $(this).unbind('mousemove');
  });
}).mousedown(function(e){
	$(this).mousemove(function(e){
		// task runs here
	}).mouseup(function(){
	  $(this).unbind('mousemove');
  }).mouseout(function(){
	  $(this).unbind('mousemove');
  });
});
&#13;
&#13;
&#13;

0 个答案:

没有答案