jquerytagsmousehover

Tags hovering like Stack Overflow using jQuery


How does stackoverflow does that hovering effect on a tag of a question? How to do the same using jquery?

EDIT: Not that mouseover i want the submenu showing Add Jquery to favorite tags


Solution

  • This should do the work.

    http://jsfiddle.net/5GD6r/4/

    I have coded it almost exactly the way Stack Overflow does. I built upon the button already created by @Reigel.

    HTML:

    <a href="#" class="post-tag" title="show questions tagged 'mousehover'" rel="tag">Ruby-on-Rails</a>
    
    <a href="#" class="post-tag" title="show questions tagged 'mousehover'" rel="tag">JQuery</a>
    
    <a href="#" class="post-tag" title="show questions tagged 'mousehover'" rel="tag">CSS</a>
    
    
    <div class="mouseoverHoverBox">
        <span class="pointer">
            <span class="plusminus">+</span>
            <span class="addRemove">Add </span>
            <span class="insert"></span>
            <span class="fromTo"> To </span>
            <span>Interesting tags</span>
        </span>
        <br />
        <span class="pointer">
            <span class="plusminus">+</span>
            <span class="addRemove">Add</span>
            <span class="insert"></span>
            <span class="fromTo"> To </span>
            <span>Ignored tags</span>
        </span>
    </div>
    

    CSS:

    .post-tag {
        position:relative;
        background-color: #E0EAF1;
        border-bottom: 1px solid #3E6D8E;
        border-right: 1px solid #7F9FB6;
        color: #3E6D8E;
        font-size: 90%;
        line-height: 2.4;
        margin: 2px 0px 2px 0px;
        padding: 3px 4px;
        text-decoration: none;
        white-space: nowrap;
        }
    
    .post-tag:hover {
        position:relative;
        background-color:#3E6D8E;
        color:#E0EAF1;
        border-bottom:1px solid #37607D;
        border-right:1px solid #37607D;
        text-decoration:none;
    }
    
    .mouseoverHoverBox {
        position:relative;
        top: -6px;
        border: 2px ridge #CCC;
        padding: 10px;
        width: 250px;
    }
    
    .plusminus {
        color: #E45C0E;
    }
    
    .pointer {
        cursor: pointer;
        width: 100%;
        height: 100%;
        color: #3E6D8E;
    }
    

    JAVASCRIPT:

    $('.mouseoverHoverBox').hide();
    
    $('.post-tag').live('mouseover',function(e){
        var x = $(this).offset();
        $('.mouseoverHoverBox').css('left',x.left-10);
        $('.insert').html(' <b>'+$(this).text() + '</b> ');
        $('.mouseoverHoverBox').slideDown();
    });
    
    $('.pointer').live('mouseover mouseout', function(e){
        if(e.type=="mouseover") {
            $(this).css('text-decoration','underline');
        }else if(e.type="mouseout") {
            $(this).css('text-decoration','none');
        }
    });
    
    $('.pointer').toggle(function() {
       $(this).find('.plusminus').text('x ');
       $(this).find('.addRemove').text('Remove ');
       $(this).find('.fromTo').text('From');
    }, function() {
       $(this).find('.plusminus').text('+ ');
       $(this).find('.addRemove').text('Add ');
       $(this).find('.fromTo').text('To');
    });
    
    $('.mouseoverHoverBox').mouseleave(function(){
         $(this).hide();
    });