Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F8321645
jquery.foundation.tooltips.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Referenced Files
None
Subscribers
None
jquery.foundation.tooltips.js
View Options
/*
* jQuery Foundation Tooltips 2.0.2
* http://foundation.zurb.com
* Copyright 2012, ZURB
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
*/
/*jslint unparam: true, browser: true, indent: 2 */
;(
function
(
$
,
window
,
undefined
)
{
'use strict'
;
var
settings
=
{
bodyHeight
:
0
,
selector
:
'.has-tip'
,
additionalInheritableClasses
:
[],
tooltipClass
:
'.tooltip'
,
tipTemplate
:
function
(
selector
,
content
)
{
return
'<span data-selector="'
+
selector
+
'" class="'
+
settings
.
tooltipClass
.
substring
(
1
)
+
'">'
+
content
+
'<span class="nub"></span></span>'
;
}
},
methods
=
{
init
:
function
(
options
)
{
settings
=
$
.
extend
(
settings
,
options
);
// alias the old targetClass option
settings
.
selector
=
settings
.
targetClass
?
settings
.
targetClass
:
settings
.
selector
;
return
this
.
each
(
function
()
{
var
$body
=
$
(
'body'
);
if
(
Modernizr
.
touch
)
{
$body
.
on
(
'click.tooltip touchstart.tooltip touchend.tooltip'
,
settings
.
selector
,
function
(
e
)
{
e
.
preventDefault
();
$
(
settings
.
tooltipClass
).
hide
();
methods
.
showOrCreateTip
(
$
(
this
));
});
$body
.
on
(
'click.tooltip touchstart.tooltip touchend.tooltip'
,
settings
.
tooltipClass
,
function
(
e
)
{
e
.
preventDefault
();
$
(
this
).
fadeOut
(
150
);
});
}
else
{
$body
.
on
(
'mouseenter.tooltip mouseleave.tooltip'
,
settings
.
selector
,
function
(
e
)
{
var
$this
=
$
(
this
);
if
(
e
.
type
===
'mouseenter'
)
{
methods
.
showOrCreateTip
(
$this
);
}
else
if
(
e
.
type
===
'mouseleave'
)
{
methods
.
hide
(
$this
);
}
});
}
$
(
this
).
data
(
'tooltips'
,
true
);
});
},
showOrCreateTip
:
function
(
$target
,
content
)
{
var
$tip
=
methods
.
getTip
(
$target
);
if
(
$tip
&&
$tip
.
length
>
0
)
{
methods
.
show
(
$target
);
}
else
{
methods
.
create
(
$target
,
content
);
}
},
getTip
:
function
(
$target
)
{
var
selector
=
methods
.
selector
(
$target
),
tip
=
null
;
if
(
selector
)
{
tip
=
$
(
'span[data-selector='
+
selector
+
']'
+
settings
.
tooltipClass
);
}
return
(
tip
.
length
>
0
)
?
tip
:
false
;
},
selector
:
function
(
$target
)
{
var
id
=
$target
.
attr
(
'id'
),
dataSelector
=
$target
.
data
(
'selector'
);
if
(
id
===
undefined
&&
dataSelector
===
undefined
)
{
dataSelector
=
'tooltip'
+
Math
.
random
().
toString
(
36
).
substring
(
7
);
$target
.
attr
(
'data-selector'
,
dataSelector
);
}
return
(
id
)
?
id
:
dataSelector
;
},
create
:
function
(
$target
,
content
)
{
var
$tip
=
$
(
settings
.
tipTemplate
(
methods
.
selector
(
$target
),
$
(
'<div>'
).
html
(
content
?
content
:
$target
.
attr
(
'title'
)).
html
())),
classes
=
methods
.
inheritable_classes
(
$target
);
$tip
.
addClass
(
classes
).
appendTo
(
'body'
);
if
(
Modernizr
.
touch
)
{
$tip
.
append
(
'<span class="tap-to-close">tap to close </span>'
);
}
$target
.
removeAttr
(
'title'
);
methods
.
show
(
$target
);
},
reposition
:
function
(
target
,
tip
,
classes
)
{
var
width
,
nub
,
nubHeight
,
nubWidth
,
column
,
objPos
;
tip
.
css
(
'visibility'
,
'hidden'
).
show
();
width
=
target
.
data
(
'width'
);
nub
=
tip
.
children
(
'.nub'
);
nubHeight
=
nub
.
outerHeight
();
nubWidth
=
nub
.
outerWidth
();
objPos
=
function
(
obj
,
top
,
right
,
bottom
,
left
,
width
)
{
return
obj
.
css
({
'top'
:
top
,
'bottom'
:
bottom
,
'left'
:
left
,
'right'
:
right
,
'max-width'
:
(
width
)
?
width
:
'auto'
}).
end
();
};
objPos
(
tip
,
(
target
.
offset
().
top
+
target
.
outerHeight
()
+
10
),
'auto'
,
'auto'
,
target
.
offset
().
left
,
width
);
objPos
(
nub
,
-
nubHeight
,
'auto'
,
'auto'
,
10
);
if
(
$
(
window
).
width
()
<
767
)
{
column
=
target
.
closest
(
'.columns'
);
if
(
column
.
length
<
0
)
{
// if not using Foundation
column
=
$
(
'body'
);
}
tip
.
width
(
column
.
outerWidth
()
-
25
).
css
(
'left'
,
15
).
addClass
(
'tip-override'
);
objPos
(
nub
,
-
nubHeight
,
'auto'
,
'auto'
,
target
.
offset
().
left
);
}
else
{
if
(
classes
&&
classes
.
indexOf
(
'tip-top'
)
>
-
1
)
{
objPos
(
tip
,
(
target
.
offset
().
top
-
tip
.
outerHeight
()
-
nubHeight
),
'auto'
,
'auto'
,
target
.
offset
().
left
,
width
)
.
removeClass
(
'tip-override'
);
objPos
(
nub
,
'auto'
,
'auto'
,
-
nubHeight
,
'auto'
);
}
else
if
(
classes
&&
classes
.
indexOf
(
'tip-left'
)
>
-
1
)
{
objPos
(
tip
,
(
target
.
offset
().
top
+
(
target
.
outerHeight
()
/
2
)
-
nubHeight
),
'auto'
,
'auto'
,
(
target
.
offset
().
left
-
tip
.
outerWidth
()
-
10
),
width
)
.
removeClass
(
'tip-override'
);
objPos
(
nub
,
(
tip
.
outerHeight
()
/
2
)
-
(
nubHeight
/
2
),
-
nubHeight
,
'auto'
,
'auto'
);
}
else
if
(
classes
&&
classes
.
indexOf
(
'tip-right'
)
>
-
1
)
{
objPos
(
tip
,
(
target
.
offset
().
top
+
(
target
.
outerHeight
()
/
2
)
-
nubHeight
),
'auto'
,
'auto'
,
(
target
.
offset
().
left
+
target
.
outerWidth
()
+
10
),
width
)
.
removeClass
(
'tip-override'
);
objPos
(
nub
,
(
tip
.
outerHeight
()
/
2
)
-
(
nubHeight
/
2
),
'auto'
,
'auto'
,
-
nubHeight
);
}
else
if
(
classes
&&
classes
.
indexOf
(
'tip-centered-top'
)
>
-
1
)
{
objPos
(
tip
,
(
target
.
offset
().
top
-
tip
.
outerHeight
()
-
nubHeight
),
'auto'
,
'auto'
,
(
target
.
offset
().
left
+
((
target
.
outerWidth
()
-
tip
.
outerWidth
())
/
2
)
),
width
)
.
removeClass
(
'tip-override'
);
objPos
(
nub
,
'auto'
,
((
tip
.
outerWidth
()
/
2
)
-
(
nubHeight
/
2
)),
-
nubHeight
,
'auto'
);
}
else
if
(
classes
&&
classes
.
indexOf
(
'tip-centered-bottom'
)
>
-
1
)
{
objPos
(
tip
,
(
target
.
offset
().
top
+
target
.
outerHeight
()
+
10
),
'auto'
,
'auto'
,
(
target
.
offset
().
left
+
((
target
.
outerWidth
()
-
tip
.
outerWidth
())
/
2
)
),
width
)
.
removeClass
(
'tip-override'
);
objPos
(
nub
,
-
nubHeight
,
((
tip
.
outerWidth
()
/
2
)
-
(
nubHeight
/
2
)),
'auto'
,
'auto'
);
}
}
tip
.
css
(
'visibility'
,
'visible'
).
hide
();
},
inheritable_classes
:
function
(
target
)
{
var
inheritables
=
[
'tip-top'
,
'tip-left'
,
'tip-bottom'
,
'tip-right'
,
'tip-centered-top'
,
'tip-centered-bottom'
,
'noradius'
].
concat
(
settings
.
additionalInheritableClasses
),
classes
=
target
.
attr
(
'class'
),
filtered
=
classes
?
$
.
map
(
classes
.
split
(
' '
),
function
(
el
,
i
)
{
if
(
$
.
inArray
(
el
,
inheritables
)
!==
-
1
)
{
return
el
;
}
}).
join
(
' '
)
:
''
;
return
$
.
trim
(
filtered
);
},
show
:
function
(
$target
)
{
var
$tip
=
methods
.
getTip
(
$target
);
methods
.
reposition
(
$target
,
$tip
,
$target
.
attr
(
'class'
));
$tip
.
fadeIn
(
150
);
},
hide
:
function
(
$target
)
{
var
$tip
=
methods
.
getTip
(
$target
);
$tip
.
fadeOut
(
150
);
},
reload
:
function
()
{
var
$self
=
$
(
this
);
return
(
$self
.
data
(
'tooltips'
))
?
$self
.
foundationTooltips
(
'destroy'
).
foundationTooltips
(
'init'
)
:
$self
.
foundationTooltips
(
'init'
);
},
destroy
:
function
()
{
return
this
.
each
(
function
()
{
$
(
window
).
off
(
'.tooltip'
);
$
(
settings
.
selector
).
off
(
'.tooltip'
);
$
(
settings
.
tooltipClass
).
each
(
function
(
i
)
{
$
(
$
(
settings
.
selector
).
get
(
i
)).
attr
(
'title'
,
$
(
this
).
text
());
}).
remove
();
});
}
};
$
.
fn
.
foundationTooltips
=
function
(
method
)
{
if
(
methods
[
method
])
{
return
methods
[
method
].
apply
(
this
,
Array
.
prototype
.
slice
.
call
(
arguments
,
1
));
}
else
if
(
typeof
method
===
'object'
||
!
method
)
{
return
methods
.
init
.
apply
(
this
,
arguments
);
}
else
{
$
.
error
(
'Method '
+
method
+
' does not exist on jQuery.foundationTooltips'
);
}
};
}(
jQuery
,
this
));
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, May 13, 16:47 (17 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2569164
Default Alt Text
jquery.foundation.tooltips.js (7 KB)
Attached To
Mode
rTOOLS Nasqueron Tools
Attached
Detach File
Event Timeline
Log In to Comment