--- /dev/null
+<html>
+<head>
+<title>Hover tests</title>
+<script src="http://code.jquery.com/jquery-1.6.2.js" type='text/javascript'></script>
+<style>
+/* Remove body dimensions so we can test enter/leave to surrounding browser chrome */
+body, html {
+ border: 0;
+ margin: 0;
+ padding: 0;
+}
+p {
+ margin: 2px 0;
+}
+.hover-box {
+ background: #f33;
+ padding: 3px;
+ margin: 10px 40px 20px 0;
+}
+.hover-status {
+ background: #f66;
+ padding: 1px;
+}
+.hover-inside {
+ background: #6f6;
+ padding: 1px;
+ margin: 8px auto;
+ width: 40%;
+ text-align: center;
+}
+</style>
+ </head>
+ <body>
+ <h2>Hover (mouse{over,out,enter,leave}) Tests</h2>
+ <p>Be sure to try moving the mouse out of the browser via the left side on each test.</p>
+ <div id="wrapper">
+
+ <div id="hoverbox" class="hover-box">
+ <div class="hover-status">
+ <button>Activate</button>
+ .hover() in/out: <span class="ins">0</span> / <span class="outs">0</span>
+ </div>
+ <div class="hover-inside">
+ Mouse over here should NOT trigger the counter.
+ </div>
+ </div>
+
+ <div id="livebox" class="hover-box">
+ <div class="hover-status">
+ <button>Activate</button>
+ Live enter/leave: <span class="ins">0</span> / <span class="outs">0</span>
+ </div>
+ <div class="hover-inside">
+ Mouse over here should NOT trigger the counter.
+ </div>
+ </div>
+
+ <div id="delegateenterbox" class="hover-box">
+ <div class="hover-status">
+ <button>Activate</button>
+ Delegated enter/leave: <span class="ins">0</span> / <span class="outs">0</span>
+ </div>
+ <div class="hover-inside">
+ Mouse over here should NOT trigger the counter.
+ </div>
+ </div>
+
+ <div id="overbox" class="hover-box">
+ <div class="hover-status">
+ <button>Activate</button>
+ Bind over/out: <span class="ins">0</span> / <span class="outs">0</span>
+ </div>
+ <div class="hover-inside">
+ Mouse over here SHOULD trigger the counter.
+ </div>
+ </div>
+ <div id="delegateoverbox" class="hover-box">
+ <div class="hover-status">
+ <button>Activate</button>
+ Delegated over/out: <span class="ins">0</span> / <span class="outs">0</span>
+ </div>
+ <div class="hover-inside">
+ Mouse over here SHOULD trigger the counter.
+ </div>
+ </div>
+
+ </div> <!-- wrapper -->
+
+<script>
+
+$(function(){
+
+ var x,
+ countIns = function() {
+ var d = $(this).data();
+ $("span.ins", this).text(++d.ins);
+ },
+ countOuts = function() {
+ var d = $(this).data();
+ $("span.outs", this).text(++d.outs);
+ };
+
+ // Tests can be activated separately or in combination to check for interference
+
+ $("#hoverbox button").click(function(){
+ $("#hoverbox")
+ .data({ ins: 0, outs: 0 })
+ .hover( countIns, countOuts );
+ $(this).remove();
+ });
+ $("#delegateenterbox button").click(function(){
+ $("html")
+ .find("#delegateenterbox").data({ ins: 0, outs: 0 }).end()
+ .delegate("#delegateenterbox", "mouseenter", countIns )
+ .delegate("#delegateenterbox", "mouseleave", countOuts );
+ $(this).remove();
+ });
+ $("#livebox button").click(function(){
+ $("#livebox")
+ .data({ ins: 0, outs: 0 })
+ .live("mouseenter", countIns )
+ .live("mouseleave", countOuts );
+ $(this).remove();
+ });
+
+ $("#overbox button").click(function(){
+ $("#overbox")
+ .data({ ins: 0, outs: 0 })
+ .bind("mouseover", countIns )
+ .bind("mouseout", countOuts );
+ $(this).remove();
+ });
+ $("#delegateoverbox button").click(function(){
+ $(document)
+ .find("#delegateoverbox").data({ ins: 0, outs: 0 }).end()
+ .delegate("#delegateoverbox", "mouseover", countIns )
+ .delegate("#delegateoverbox", "mouseout", countOuts );
+ $(this).remove();
+ });
+});
+
+</script>
+</body>
+</html>