在jQuery中模拟Hover

目前,我有一些jQuery / Javascript代码,当用户将鼠标hover在某些元素上时切换css类’ui-state-hovered’,我想在konacha中编写测试来测试这段代码。

如何在jQuery的帮助下在Javascript中编写这个函数?

如果用户将鼠标hover在元素$(’。someClass li:first’)上,则返回true,类’ui-state-hovered’存在。 否则返回false。

我如何模拟将鼠标hover在该元素上的用户?

尝试使用mouseentermouseleave

 $('.someClass li:first').mouseenter().mouseleave(); 

来自jQuery文档

调用$(selector).hover(handlerIn, handlerOut)是: $(selector).mouseenter(handlerIn).mouseleave(handlerOut);

演示: http //jsfiddle.net/skram/wh5N9/

请尝试以下方法检查是否会在hover时添加一个类

 $("#test").mouseenter(function() { console.log('Has class hover ' + $(this).hasClass('ui-state-hovered')); }).mouseleave(function() { console.log('Has class hover ' + $(this).hasClass('ui-state-hovered')); }) 

确保在.hover之后注册以上.hover

演示: http //jsfiddle.net/skram/wh5N9/2/

速记设置mouseenter / mouseleave事件

 $(".someClass li:first").hover( // Mouse Over function(){ $(this).addClass("ui-state-hovered"); }, // Mouse Out function(){ $(this).removeClass("ui-state-hovered"); }); 

编辑

设置事件mouseenter

 $(".someClass li:first").mouseenter(function(){ $(this).addClass("ui-state-hovered"); } 

设置事件mouseleave

 $(".someClass li:first").mouseleave(function(){ $(this).removeClass("ui-state-hovered"); }); 

要模拟鼠标hover:

 $(".someClass li:first").trigger("mouseenter"); 

要模拟mouseout:

 $(".someClass li:first").trigger("mouseleave"); 

要检查课程:

 $(".someClass li:first").hasClass("ui-state-hovered"); 

如果有一个类,则返回true:

 function checkClass(elem, class){ return $(elem).hasClass(class); }; 

编辑2

我之前从未使用过Konacha,但如果我在solitr.com上使用本指南作为我的向导 ,我会说:

HTML

 
Some Text

jQuery的

 checkClass = function(elem, class){ return $(elem).hasClass(class); }; 

Konacha

 describe('checkClass', function() { it('should be true if elem has class', function() { checkClass("#testDiv", "foo").should.be.true; checkClass("#testDiv", "bar").should.be.false; }); }); 

看到这里

 $('someClass li:first').mouseover(); 

这应该触发事件

使用控制台你可以尝试$(’#yourelement’)。trigger(’mouseover’);

在hover时写入function

 $('.someClass li:first').hover(function(){ return $(this).attr('class').indexOf('ui-state-hovered') > -1; });