]> source.dussan.org Git - jquery-ui.git/commitdiff
Add support for multiple events, along with hoverintent demo. Fixes #3614 - Accordion...
authorjzaefferer <joern.zaefferer@gmail.com>
Wed, 14 Jul 2010 17:39:29 +0000 (19:39 +0200)
committerjzaefferer <joern.zaefferer@gmail.com>
Wed, 14 Jul 2010 17:39:50 +0000 (19:39 +0200)
demos/accordion/hoverintent.html [new file with mode: 0644]
demos/accordion/index.html
ui/jquery.ui.accordion.js

diff --git a/demos/accordion/hoverintent.html b/demos/accordion/hoverintent.html
new file mode 100644 (file)
index 0000000..e0f2d74
--- /dev/null
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+       <meta charset="UTF-8" />
+       <title>jQuery UI Accordion - Default functionality</title>
+       <link type="text/css" href="../../themes/base/jquery.ui.all.css" rel="stylesheet" />
+       <script type="text/javascript" src="../../jquery-1.4.2.js"></script>
+       <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+       <script type="text/javascript" src="../../ui/jquery.ui.widget.js"></script>
+       <script type="text/javascript" src="../../ui/jquery.ui.accordion.js"></script>
+       <link type="text/css" href="../demos.css" rel="stylesheet" />
+       <script type="text/javascript">
+               
+       var cfg = ($.hoverintent = {
+               sensitivity: 7,
+               interval: 100
+       });
+               
+       $.event.special.hoverintent = {
+               setup: function() {
+                       $(this).bind("mouseover", jQuery.event.special.hoverintent.handler);
+               },
+               teardown: function() {
+                       $(this).unbind("mouseover", jQuery.event.special.hoverintent.handler);
+               },
+               handler: function(event) {
+                       event.type = "hoverintent";
+                       var self = this,
+                               args = arguments,
+                               target = $(event.target),
+                               cX, cY, pX, pY;
+                               
+                       function track(event) {
+                               cX = event.pageX;
+                               cY = event.pageY;
+                       };
+                       pX = event.pageX;
+                       pY = event.pageY;
+                       function clear() {
+                               target.unbind("mousemove", track).unbind("mouseout", arguments.callee);
+                               clearTimeout(timeout);
+                       }
+                       function handler() {
+                               if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
+                                       clear();
+                                       jQuery.event.handle.apply(self, args);
+                               } else {
+                                       pX = cX; pY = cY;
+                                       timeout = setTimeout(handler, cfg.interval);
+                               }
+                       }
+                       var timeout = setTimeout(handler, cfg.interval);
+                       target.mousemove(track).mouseout(clear);
+                       return true;
+               }
+       };
+
+               
+       $(function() {
+               $("#accordion").accordion({
+                       event: "click hoverintent"
+               });
+       });
+       </script>
+</head>
+<body>
+
+<div class="demo">
+
+<div id="accordion">
+       <h3><a href="#">Section 1</a></h3>
+       <div>
+               <p>
+               Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
+               ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
+               amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
+               odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
+               </p>
+       </div>
+       <h3><a href="#">Section 2</a></h3>
+       <div>
+               <p>
+               Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
+               purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
+               velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
+               suscipit faucibus urna.
+               </p>
+       </div>
+       <h3><a href="#">Section 3</a></h3>
+       <div>
+               <p>
+               Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.
+               Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero
+               ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis
+               lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.
+               </p>
+               <ul>
+                       <li>List item one</li>
+                       <li>List item two</li>
+                       <li>List item three</li>
+               </ul>
+       </div>
+       <h3><a href="#">Section 4</a></h3>
+       <div>
+               <p>
+               Cras dictum. Pellentesque habitant morbi tristique senectus et netus
+               et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in
+               faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia
+               mauris vel est.
+               </p>
+               <p>
+               Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.
+               Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
+               inceptos himenaeos.
+               </p>
+       </div>
+</div>
+
+</div><!-- End demo -->
+
+<div class="demo-description">
+<p>
+Click headers to expand/collapse content that is broken into logical sections, much like tabs.
+Optionally, toggle sections open/closed on mouseover.
+</p>
+<p>
+The underlying HTML markup is a series of headers (H3 tags) and content divs so the content is
+usable without JavaScript.
+</p>
+</div><!-- End demo-description -->
+
+</body>
+</html>
index de3751128d5bc13245aebaae6a9b7b6f4ed47052..70f0d9dee99c36a69e54178d245e17a33a233101 100644 (file)
@@ -14,6 +14,7 @@
                        <li><a href="no-auto-height.html">No auto height</a></li>
                        <li><a href="collapsible.html">Collapse content</a></li>
                        <li><a href="mouseover.html">Open on mouseover</a></li>
+                       <li><a href="hoverintent.html">Open on hoverintent</a></li>
                        <li><a href="custom-icons.html">Customize icons</a></li>
                        <li><a href="sortable.html">Sortable</a></li>
                </ul>
index 6bda009e329e2f27d01b826aa3b4230cdaea1ebd..bcb0452bbf18236d947a351a35b7393189375f75 100644 (file)
@@ -117,7 +117,7 @@ $.widget("ui.accordion", {
                        this.headers.find('a').attr('tabIndex','-1');
 
                if (o.event) {
-                       this.headers.bind((o.event) + ".accordion", function(event) {
+                       this.headers.bind(o.event.split(" ").join(".accordion ") + ".accordion", function(event) {
                                self._clickHandler.call(self, event, this);
                                event.preventDefault();
                        });