问题描述
使用JQuery我试图在元素具有悬停状态时链接几个函数。
我通常会使用 .on()只能使用1个函数,因此您必须询问传入的事件来检查事件是什么。试试这个:
$(element)。on(hover,function(e){
if (e.type ==mouseenter){
console.log(one);
}
else {// mouseleave
console.log(two) ;
}
});
或者,您可以拆分构成 hover() 方法 - mouseenter 和 mouseleave :
#element {background-color:black; height:100px; margin:100px; width:100px;}< script src =https ://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js>< / script>< div id =element>< / div>
Using JQuery I am trying to chain a couple of functions when an element has a hover state.
I would normally use the .hover event function, but after reading some tutorials I read that using .on is better as you can use one event handler to monitor all bubbling events within a document.
However, I am having problems when I chain two functions together like so:
$("element").on( "hover", function() { console.log("one"); }, function() { console.log("two"); });
I expected the result to be one two (which was the case when using .hover) but instead I get two two.
Can anyone explain what I am doing wrong or whether this is expected behaviour and why?
Reproduced using .hover(...): http://jsfiddle.net/gXSdG/
Reproduced using .on(hover...): http://jsfiddle.net/gXSdG/1/
.on() can only take 1 function, so you have to interrogate the passed event to check what the event was. Try this:
$("element").on("hover", function(e) { if (e.type == "mouseenter") { console.log("one"); } else { // mouseleave console.log("two"); } });
Alternatively you can split the two events which constitute the hover() method - mouseenter and mouseleave:
$("#element").on("mouseenter", function() { console.log("one"); }).on('mouseleave', function() { console.log("two"); });
#element { background-color: black; height: 100px; margin: 100px; width: 100px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="element"></div>
这篇关于.hover(...)和on。(“悬停”...)的行为不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!