title: Twitter Bootstrap: How to close modal / popover programmatically with jQuery
body: <p>I am using jquery bootstrap dropdown. I add some input text in dropdown and now what I want to do when I try to submit, it must close the dropdown. Is it any way ?</p>
  
  <p>Here it's the demo of url from twitter bootstrap :
  <a href="http://twitter.github.com/bootstrap/javascript.html#dropdowns" rel="noreferrer">http://twitter.github.com/bootstrap/javascript.html#dropdowns</a></p>
  
  <pre><code>!function ($) {
  
    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)
      , $parent
      , isActive
  
    if ($this.is('.disabled, :disabled')) return
  
    $parent = getParent($this)
  
    isActive = $parent.hasClass('open')
  
    clearMenus()
  
    if (!isActive) {
      $parent.toggleClass('open')
      $this.focus()
    }
  
    return false
  }
  
    , keydown: function (e) {
    var $this
      , $items
      , $active
      , $parent
      , isActive
      , index
  
    if (!/(38|40|27)/.test(e.keyCode)) return
  
    $this = $(this)
  
    e.preventDefault()
    e.stopPropagation()
  
    if ($this.is('.disabled, :disabled')) return
  
    $parent = getParent($this)
  
    isActive = $parent.hasClass('open')
  
    if (!isActive || (isActive &amp;&amp; e.keyCode == 27)) return $this.click()
  
    $items = $('[role=menu] li:not(.divider) a', $parent)
  
    if (!$items.length) return
  
    index = $items.index($items.filter(':focus'))
  
    if (e.keyCode == 38 &amp;&amp; index &gt; 0) index--                                        // up
    if (e.keyCode == 40 &amp;&amp; index &lt; $items.length - 1) index++                        // down
    if (!~index) index = 0
  
    $items
      .eq(index)
      .focus()
  }
  
  
  
  }
  
    function clearMenus() {
  getParent($(toggle))
    .removeClass('open')
  
  
  }
  
    function getParent($this) {
  var selector = $this.attr('data-target')
    , $parent
  
  if (!selector) {
    selector = $this.attr('href')
    selector = selector &amp;&amp; /#/.test(selector) &amp;&amp; selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
  }
  
  $parent = $(selector)
  $parent.length || ($parent = $this.parent())
  
  return $parent
  
  
   }
  
  
    $.fn.dropdown = function (option) {
  return this.each(function () {
    var $this = $(this)
      , data = $this.data('dropdown')
    if (!data) $this.data('dropdown', (data = new Dropdown(this)))
    if (typeof option == 'string') data[option].call($this)
  })
    }
  
    $.fn.dropdown.Constructor = Dropdown
  
  
  
    $(function () {
  $('html')
    .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
  $('body')
    .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
    .on('click.dropdown.data-api touchstart.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
    .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
    })
  
  }(window.jQuery);
  </code></pre>