Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing the title attribute using jQuery while hovering over the element

I have div button that has a title attribute that us used as the text for tool tips using jQueryUI. I would like to change the tooltip of the button by clicking it. However, when the button is clicked and the call back function is fired, the mouse is over the div and title is null.

How do I go about fixing this behaviour? It looks like jQueryUI Tooltip widget removes the title on hover and puts it back on mouse out.

$( document ).tooltip();
$(".btn").click(function(){
    alert($(this).attr("title")); // Expect to see T1 or T2 but shows blank
    if ($(this).attr("title")=="T1"){
        $(this).attr("title","T2")
    }else{
        $(this).attr("title","T1")
    }
});

Live: http://jsfiddle.net/lordloh/ckTjA/

Without the jQueryUI Tooltip widget in place, things seem to work fine : http://jsfiddle.net/lordloh/ckTjA/1/

Moreover, I have the tooltip widget applied on $(document). So I cannot use $(this).tooltip("option","content") as the tooltip is not applied on $(this) explicitly. This results in a Javascript error on the console.

2013-02-18: As of now, I am running $(document).tooltip("destroy");, changing title attributes and $(document).tooltip();. Not an elegant solution :-( I am looking for something that is not a hack.

like image 533
Lord Loh. Avatar asked Feb 17 '13 22:02

Lord Loh.


People also ask

What is hover () method in jQuery?

The hover() method specifies two functions to run when the mouse pointer hovers over the selected elements. This method triggers both the mouseenter and mouseleave events. Note: If only one function is specified, it will be run for both the mouseenter and mouseleave events.

How to use hover event in jQuery?

The hover() is an inbuilt method in jQuery which is used to specify two functions to start when mouse pointer move over the selected element. Syntax: $(selector). hover(Function_in, Function_out);

How do I change dynamic value tooltip?

Drag the calculated field to the appropriate tooltip and you'll see an ATTR dimension pill with a tooltip logo in the Marks card. Insert the ATTR budget and adjusted inflated gross calculated fields into its corresponding tooltip as seen in Image 6. After that, you're dynamic tooltip should work!

How can we set the page title in jQuery?

You can easily achieve it via single line of code. All you need is to set new value to title attribute of the document object.


2 Answers

The widget removes the text from the title attribute to prevent the native browser tooltip from appearing. When it removes the text, it stores it in data attached to the element.

You can do the same using this line of code:

$("#my-element").data("ui-tooltip-title", "My new tooltip message");

Now, if the user moves their mouse away from the element, and then hovers back onto it, it will show the new text.

To show the new text immediately, you need to update the live tooltip overlay element, which thankfully is easy to find. You just need to do this after you've updated the text:

$(".ui-tooltip-content").html($("#my-element").data("ui-tooltip-title"));

Tested on jQuery UI 1.10.0.

like image 185
BG100 Avatar answered Oct 12 '22 23:10

BG100


When using the tooltip widget, you can update the contents via its own API:

    $(this).tooltip('option', 'content', "New Content Goes Here");
like image 25
Pointy Avatar answered Oct 13 '22 00:10

Pointy