单击特定列表项时,在引导程序下拉列表上取消隐藏事件

时间:2015-11-23 08:43:33

标签: javascript jquery twitter-bootstrap

我有一个带有以下HTML结构的bootstrap下拉菜单:

<div class="btn-group cart-item-qty-select open">
    <button type="button" class="btn btn-default dropdown-toggle font-xsm cart-item-qty-btn" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
        <span class="cart-item-qty-btn-number">32</span>
        <i class="fa fa-align-right font-xsm fa-caret-down"></i>
    </button>
    <ul class="dropdown-menu quantity-dropdown">
        <li class="value" data-value="1">
            <a href="javascript:void(null)">11</a>
        </li>
        <li class="value" data-value="2">
            <a href="javascript:void(null)">12</a>
        </li>
        <li class="value" data-value="3">
            <a href="javascript:void(null)">13</a>
        </li>
        <li class="value" data-value="4">
            <a href="javascript:void(null)">14</a>
        </li>
        <li class="value" data-value="5">
            <a href="javascript:void(null)">15</a>
        </li>
        <li class="value" data-value="6">
            <a href="javascript:void(null)">16</a>
        </li>
        <li class="value" data-value="7">
            <a href="javascript:void(null)">17</a>
        </li>
        <li class="value" data-value="8">
            <a href="javascript:void(null)">18</a>
        </li>
        <li class="value" data-value="9">
            <a href="javascript:void(null)">19</a>
        </li>
        <li role="separator" class="divider"></li>
        <li class="quantity-increase-by-ten">
            <a href="#">20+</a>
        </li>
    </ul>
</div>

我想要在单击li.quantity-increase-by-ten时关闭下拉菜单(hide.bs.dropdown事件已取消)。

不幸的是,下拉列表的事件对象没有提供有关点击下拉列表项的任何信息。

作为已接受的答案,我还会考虑其他类似引导程序的替代方案,这些方案在风格上可以像下拉列表一样,但具有更多的事件对象灵活性。

3 个答案:

答案 0 :(得分:2)

$(function () {
    $(".quantity-increase-by-ten").on("click", function (e) {
        e.stopPropagation();
    });
});

将停止呼叫上行链路并阻止引导程序关闭下拉菜单。

答案 1 :(得分:1)

您只需要停止点击的传播:

$('.quantity-increase-by-ten').click(function(e) {
    e.stopPropagation();
});

我希望这是您正在寻找的解决方案。

答案 2 :(得分:0)

preventDefault()点击事件<li>会产生预期效果吗?

$(".quantity-increase-by-ten").on("click", function(){
    preventDefault();
    //<li> click code here...
});