在jQuery中模拟Hover
目前,我有一些jQuery / Javascript代码,当用户将鼠标hover在某些元素上时切换css类’ui-state-hovered’,我想在konacha中编写测试来测试这段代码。
如何在jQuery的帮助下在Javascript中编写这个函数?
如果用户将鼠标hover在元素$(’。someClass li:first’)上,则返回true,类’ui-state-hovered’存在。 否则返回false。
我如何模拟将鼠标hover在该元素上的用户?
尝试使用mouseenter
和mouseleave
$('.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; });