下拉菜单项中的 jquery 滑块导致太多事件

Posted

技术标签:

【中文标题】下拉菜单项中的 jquery 滑块导致太多事件【英文标题】:jquery slider in dropdown menu item causing too many events 【发布时间】:2013-06-20 06:59:14 【问题描述】:

我在下拉菜单项中使用 jQuery 滑块。当我单击菜单项时,会打开一个带有滑块的下拉菜单。用户应拖动滑块手柄之一。从那时起,该页面上的任何鼠标移动都会导致滑块事件和回调。这一直持续到我单击页面上的其他位置,有效地回滚菜单向下。

这种行为正常吗?用户释放滑块手柄后,如何让滑块更改事件停止?每当用户更改滑块时,我都有一个从数据库重新加载的页面。这会导致数据库负载过大。

我正在使用带有引导程序的 jQuery UI。您可以在http://jsfiddle.net/Sh5A5/2/ 看到示例

这里是 JS:

islide = 0;
$("#XYZ").text("DDDDDxD");
$("#XYZ").append("<b class=caret></b>");
$("#slider-range").slider(
    range: true,
    min: 0,
    max: 500,
    values: [75, 300],
    slide: function (event, ui) 
        alert("hello #" + ++islide);
        $("#XYZ").html("$" + $("#slider-range").slider("values", 0) + " - $" + $("#slider-range").slider("values", 1) + " <b class='caret'></b>");


    
);

和html:

<div class="nav dropdown"> <a id="XYZ" data-toggle="dropdown" class="btn btn-primary" href="#"></a>
    <ul class="dropdown-menu">
        <li><a href="#">
                <p>Range: 0 to Inf</p>
                   <div id="slider-range"></div>
                </a>
        </li>
    </ul>
</div>

我在没有引导程序的情况下尝试了同样的方法。它看起来很丑,但行为却是一样的。有更好的选择吗?

谢谢

【问题讨论】:

【参考方案1】:

导致这种行为的原因是这一行:

alert("hello #" + ++islide);

当在滑动事件处理程序中调用 alert() 时,鼠标永远不会被释放。 所以你必须删除对 alert() 的调用: http://jsfiddle.net/Rusln/eKjCD/

【讨论】:

以上是关于下拉菜单项中的 jquery 滑块导致太多事件的主要内容,如果未能解决你的问题,请参考以下文章

侧边菜单项中的下拉按钮

Bootstrap 4,在导航菜单项中使用多个下拉按钮

用点击事件的方式 实现二级下拉菜单(用javaScript与jquery,vue)

jquery 下拉菜单

jquery下拉菜单[复合事件hover制作]

关于html select下拉菜单