Simulate Hover in jQuery

后端 未结 5 1196
北恋
北恋 2020-12-25 13:33

Currently, I have some jQuery/Javascript code that toggles the css class \'ui-state-hovered\' when a user hovers the mouse over certain elements, and I want to write a test

5条回答
  •  庸人自扰
    2020-12-25 14:30

    Shorthand set mouseenter/mouseleave events

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

    EDIT

    Set event mouseenter

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

    Set event mouseleave

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

    To simulate mouseover:

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

    To simulate mouseout:

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

    To check for a class:

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

    To return true if has a class:

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

    EDIT 2

    I've never use Konacha before, but if I were to take a stab at it using this guide at solitr.com as my guide, I'd say:

    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;
        });
    });
    

提交回复
热议问题