|
@@ -1,8 +1,8 @@
|
|
|
/* ============================================================
|
|
|
- * bootstrap-dropdown.js v1.3.0
|
|
|
- * http://twitter.github.com/bootstrap/javascript.html#dropdown
|
|
|
+ * bootstrap-dropdown.js v2.0.0
|
|
|
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
|
|
|
* ============================================================
|
|
|
- * Copyright 2011 Twitter, Inc.
|
|
|
+ * Copyright 2012 Twitter, Inc.
|
|
|
*
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
* you may not use this file except in compliance with the License.
|
|
@@ -20,31 +20,73 @@
|
|
|
|
|
|
!function( $ ){
|
|
|
|
|
|
- var d = 'a.menu, .dropdown-toggle'
|
|
|
+ "use strict"
|
|
|
+
|
|
|
+ /* DROPDOWN CLASS DEFINITION
|
|
|
+ * ========================= */
|
|
|
+
|
|
|
+ var toggle = '[data-toggle="dropdown"]'
|
|
|
+ , Dropdown = function ( element ) {
|
|
|
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
|
|
|
+ $('html').on('click.dropdown.data-api', function () {
|
|
|
+ $el.parent().removeClass('open')
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ Dropdown.prototype = {
|
|
|
+
|
|
|
+ constructor: Dropdown
|
|
|
+
|
|
|
+ , toggle: function ( e ) {
|
|
|
+ var $this = $(this)
|
|
|
+ , selector = $this.attr('data-target')
|
|
|
+ , $parent
|
|
|
+ , isActive
|
|
|
+
|
|
|
+ if (!selector) {
|
|
|
+ selector = $this.attr('href')
|
|
|
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
|
|
+ }
|
|
|
+
|
|
|
+ $parent = $(selector)
|
|
|
+ $parent.length || ($parent = $this.parent())
|
|
|
+
|
|
|
+ isActive = $parent.hasClass('open')
|
|
|
+
|
|
|
+ clearMenus()
|
|
|
+ !isActive && $parent.toggleClass('open')
|
|
|
+
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
function clearMenus() {
|
|
|
- $(d).parent('li').removeClass('open')
|
|
|
+ $(toggle).parent().removeClass('open')
|
|
|
}
|
|
|
|
|
|
- $(function () {
|
|
|
- $('html').bind("click", clearMenus)
|
|
|
- $('body').dropdown( '[data-dropdown] a.menu, [data-dropdown] .dropdown-toggle' )
|
|
|
- })
|
|
|
|
|
|
/* DROPDOWN PLUGIN DEFINITION
|
|
|
* ========================== */
|
|
|
|
|
|
- $.fn.dropdown = function ( selector ) {
|
|
|
+ $.fn.dropdown = function ( option ) {
|
|
|
return this.each(function () {
|
|
|
- $(this).delegate(selector || d, 'click', function (e) {
|
|
|
- var li = $(this).parent('li')
|
|
|
- , isActive = li.hasClass('open')
|
|
|
-
|
|
|
- clearMenus()
|
|
|
- !isActive && li.toggleClass('open')
|
|
|
- return false
|
|
|
- })
|
|
|
+ var $this = $(this)
|
|
|
+ , data = $this.data('dropdown')
|
|
|
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
|
|
|
+ if (typeof option == 'string') data[option].call($this)
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-}( window.jQuery || window.ender );
|
|
|
+ $.fn.dropdown.Constructor = Dropdown
|
|
|
+
|
|
|
+
|
|
|
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
|
|
|
+ * =================================== */
|
|
|
+
|
|
|
+ $(function () {
|
|
|
+ $('html').on('click.dropdown.data-api', clearMenus)
|
|
|
+ $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
|
|
|
+ })
|
|
|
+
|
|
|
+}( window.jQuery )
|