Search code examples
jqueryclickmouseovertipsy

jQuery Tipsy: Simple Overwriting Solution?


How can I change the direction from "n" to "w" without losing the test text and without cloning it?

$(".tipsy").live('mouseover',function() {
    $(this).tipsy({gravity: "n", html: true});
    $(this).tipsy("show");
});

$(".tipsy").live("click",function() {
    $('.tipsy').remove();
    $(this).tipsy({gravity: 'w', html: true});
    $(this).tipsy("show");
});

<div class="tipsy" title='<u>test link</u>'>TestTestTestTestTestTestTestTestTestTestTest</div>

Here's a fiddle: http://jsfiddle.net/nQvmw/23/


Solution

  • As seen in the tipsy plugin homepage, you can pass a function that returns a direction as your gravity option :

    $(el).tipsy({gravity: function(){return Math.random()>.5 ? 'w' : 'n';}
    

    Based on this feature, you could easily make a function that returns different directions for different mouse actions (mouseenter,click...) :

    var flag = false;
    function gravity(){
        return flag ? 'n' : 'w';
    };
    
    $(".tipsy")
        .live('mouseover',function(){
            flag = true;
            $(this).tipsy("show");
        })
        .live("click",function() {
            flag = false;
            $(this).tipsy("show");
        })
        .tipsy({
            gravity: gravity,
            html: true
        });
    

    Here's the working demo