2012-10-19 30 views
38

Tôi đang sử dụng trình đơn thả xuống khởi động jquery. Tôi thêm một số văn bản đầu vào trong trình đơn thả xuống và bây giờ những gì tôi muốn làm khi tôi cố gắng gửi, nó phải đóng menu thả xuống. Có cách nào không?Twitter Bootstrap: Cách đóng chương trình/popover theo lập trình với jQuery

Dưới đây đó là bản demo của url từ twitter bootstrap: http://twitter.github.com/bootstrap/javascript.html#dropdowns

!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 && 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 && index > 0) index--          // up 
    if (e.keyCode == 40 && index < $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 && /#/.test(selector) && 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); 

Trả lời

85

cho modal bootstrap

Hãy thử $('#myModal').modal('hide')

Đối popover bootstrap

Tôi chỉ thấy bạn đang nói về một phương thức bootstrap dropdown không phải bootstrap:

Trong trường hợp này cách tiếp cận của bạn không tệ, chỉ cần loại bỏ lớp mở của phần tử gốc. Trong ví dụ từ liên kết trên các yếu tố thả xuống đầu tiên có id là "drop3", như vậy để programatically đóng nó, bạn có thể làm:

$('#drop3').parent().removeClass("open"); 
+0

Hi Frank, Cảm ơn bạn trả lời. Vậy tôi có thể đặt hàm vào mã của mình ở đâu? –

+0

đây thực sự là mã lộn xộn nhưng tôi đoán bạn muốn gì nếu (! IsActive) { $ parent.addClass ('open') $ this.focus() } else {$ parent.removeClass ('open')} – tmaximini

+1

Tại sao đây không phải là câu trả lời được chấp nhận? –

14

Để đóng bootstrap modal bạn có thể sử dụng 'hide' như tùy chọn để phương thức phương pháp như sau

$('#modal').modal('hide'); 

Xin hãy nhìn vào làm việc fiddle here

9

Nếu bạn đang tìm kiếm ẩn hộp phương thức.

Điều tốt nhất bạn có thể làm là

 $('#myModal').modal("hide"); 
Các vấn đề liên quan