Tooltip: Accept HTMLElement and jQuery objects for the content option

Fixes #9278
Closes #983
Closes #1421
This commit is contained in:
Daniel Owens 2013-05-08 12:15:44 -05:00 committed by Jörn Zaefferer
parent ae1d6d5f90
commit 42099e4461
2 changed files with 29 additions and 8 deletions

View File

@ -100,6 +100,30 @@ test( "content: string", function() {
}).tooltip( "open" );
});
test( "content: element", function() {
expect( 1 );
var content = "<p>this is a <i>test</i> of the emergency broadcast system.</p>",
element = $( content )[ 0 ];
$( "#tooltipped1" ).tooltip({
content: element,
open: function( event, ui ) {
equal( ui.tooltip.children().html().toLowerCase(), content );
}
}).tooltip( "open" );
});
test( "content: jQuery", function() {
expect( 1 );
var content = "<p>this is a <i>test</i> of the emergency broadcast system.</p>",
element = $( content );
$( "#tooltipped1" ).tooltip({
content: element,
open: function( event, ui ) {
equal( ui.tooltip.children().html().toLowerCase(), content );
}
}).tooltip( "open" );
});
test( "items", function() {
expect( 2 );
var event,

View File

@ -208,7 +208,8 @@ return $.widget( "ui.tooltip", {
that = this,
eventType = event ? event.type : null;
if ( typeof contentOption === "string" ) {
if ( typeof contentOption === "string" || contentOption.nodeType ||
contentOption.jquery ) {
return this._open( event, target, contentOption );
}
@ -276,13 +277,9 @@ return $.widget( "ui.tooltip", {
// JAWS announces deletions even when aria-relevant="additions"
// Voiceover will sometimes re-read the entire log region's contents from the beginning
this.liveRegion.children().hide();
if ( content.clone ) {
a11yContent = content.clone();
a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
} else {
a11yContent = content;
}
$( "<div>" ).html( a11yContent ).appendTo( this.liveRegion );
a11yContent = $( "<div>" ).html( tooltip.find( ".ui-tooltip-content" ).html() );
a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
a11yContent.appendTo( this.liveRegion );
function position( event ) {
positionOption.of = event;