<html> <head> <title>Hover tests</title> <script src="jquery.js"></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="liveenterbox" 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="liveoverbox" class="hover-box"> <div class="hover-status"> <button>Activate</button> Live 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(); }); $("#liveenterbox button").click(function(){ $("#liveenterbox") .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(); }); $("#liveoverbox button").click(function(){ $("#liveoverbox") .data({ ins: 0, outs: 0 }) .live("mouseover", countIns ) .live("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>