阻止关闭点击时自举下拉列表

时间:2014-03-21 00:13:04

标签: twitter-bootstrap drop-down-menu

我正在尝试将复选框放入bootstrap下拉列表中。我不希望下拉列表在点击时关闭,但如果他们点击网站上的其他位置,我仍然希望它关闭。我仍然想在下拉列表中点击其他javascript操作。我有一个与我想要的完全相反的例子。此示例关闭单击下拉列表,但在从下拉区域外部单击时保持打开状态。

 $(function () {
     $('.dropdown.keep-open').on({
         "shown.bs.dropdown": function() {
             $(this).data('closable', false);
         },
         "click": function() {
             $(this).data('closable', true);
         },
         "hide.bs.dropdown": function() {
             return $(this).data('closable');
         }
     });
 });   

http://jsfiddle.net/KyleMit/ZS4L7/

2 个答案:

答案 0 :(得分:6)

我终于明白了。代码如下:

$(function() {
    $('.dropdown.keep-open').on({
        "shown.bs.dropdown": function() {
            $(this).data('closable', false);
        },
        "click": function(event) {
            $(this).data('closable', false);
        },
        "hide.bs.dropdown": function(event) {
            temp = $(this).data('closable');
            $(this).data('closable', true);
            return temp;
        }
    });
});

编辑:在第11行添加了缺少的分号。

答案 1 :(得分:-1)

我必须实现相同的目的,并写了一个更简单的东西:

$('.dropdown.keep-open').one({
  'mouseenter': () => { $(this).data('closable', false); },
  'mouseleave': () => { $(this).data('closable', true); },
  'hide.bs.dropdown': () => !!$(this).data('closable')
});

我希望它可以帮助某人。顺便说一句,这些都是非常肮脏的骇客,Bootstrap确实可以为此提供选择。