单击时重置Bootstrap下拉按钮值

时间:2017-04-08 13:37:42

标签: javascript jquery twitter-bootstrap

我使用Bootstrap Dropdown组件代替普通的选择菜单。当用户在下拉列表中选择一个选项时,它会显示在下拉按钮上。这工作正常,但我需要允许用户使用onclick函数将按钮重置为默认值。

HTML:

<ul class="nav nav-pills left">
            <li class="dropdown active span8">
                <a class="dropdown-toggle" id="inp_impact" data-toggle="dropdown">
                    <i class="icon icon-envelope icon-white"></i>&nbsp;Select<span class="caret"></span></a>
                <ul ID="divNewNotifications" class="dropdown-menu">
                        <li><a>One</a></li> 
                          <li><a>Two</a></li>       
                            <li><a>Three</a></li>                         
                </ul>
            </li>
        </ul>

        <button class="resetdropdown">Clear</button>

JS:

$('#divNewNotifications li').on('click', function() {
$('.dropdown-toggle').html($(this).find('a').html());
});


$('.resetdropdown').on('click', function() {
$('.dropdown-toggle').html(" ");
});

JSFiddle证明了这个问题。

正如您所看到的那样,&#39; Clear&#39;单击按钮它会从Bootstrap Dropdown按钮中删除所有内容,但这是错误的,因为我需要重新设置回默认值,就像页面已刷新一样?

2 个答案:

答案 0 :(得分:1)

您可以使用“清除”按钮本身将下拉列表的默认值保存为按钮的属性。

在dom准备就绪时,您可以保存这样的值并在一段代码中处理click事件:

$('.resetdropdown').on('click', function(e) {
    //
    // if the attribute doesn't exist add it...
    //
    if ($(this).attr('defValue') == undefined) {
        $(this).attr('defValue', ' ' + $('.dropdown-toggle')
              .contents().get(2).textContent + ' ');
    } else {
        //
        // ...else do the click event stuff
        //
        $('.dropdown-toggle').contents().get(2).textContent = 
                 ' ' + $(this).attr('defValue') + ' ';
    }
}).trigger('click');  // trigger the click immediately after event handler declaration.

代码段(updated jsfiddle):

$('#divNewNotifications li').on('click', function(e) {
    $('.dropdown-toggle').contents().filter(function(idx, ele) {
        return ele.nodeType == Node.TEXT_NODE && ele.textContent.trim().length != 0
    }).get(0).textContent = ' ' + this.textContent.trim() + ' ';
});


$('.resetdropdown').on('click', function(e) {
    if ($(this).attr('defValue') == undefined) {
        $(this).attr('defValue', ' ' + $('.dropdown-toggle').contents().get(2).textContent + ' ');
    } else {
        $('.dropdown-toggle').contents().get(2).textContent = ' ' + $(this).attr('defValue') + ' ';
    }
}).trigger('click');
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css">
<script src="https://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min.js"></script>


<ul class="nav nav-pills left">
    <li class="dropdown active span8">
        <a class="dropdown-toggle" id="inp_impact" data-toggle="dropdown">
            <i class="icon icon-envelope icon-white"></i>&nbsp;Select<span class="caret"></span></a>
        <ul ID="divNewNotifications" class="dropdown-menu">
            <li><a>One</a></li>
            <li><a>Two</a></li>
            <li><a>Three</a></li>
        </ul>
    </li>
</ul>

<button class="resetdropdown">
    Clear
</button>

答案 1 :(得分:0)

您应该将默认值存储在变量中并将其注入重置功能。<​​/ p>