Jquery - 单击外部或单击另一个下拉列表时关闭下拉列表/删除活动类

2023-11-30

我刚刚创建了自己的 jquery 插件,并且有一个下拉菜单,可以在单击自身时切换“活动”类

我只想在单击元素外部或单击其他下拉列表时删除“活动”类 每个下拉菜单都有不同的标记,但具有相同的类,我通过调用以下命令通过 jquery 初始化了它们:

$('.dropdown').dropdown();

这个东西的外观与 Bootstrap 下拉菜单类似

这是我的代码:

<style>
.dropdown {
position:relative;
display:inline-block;
}
.dropdown > button {
padding:6px 12px;
border-radius:4px;
border:1px solid #bbb;
background:linear-gradient(#fff 5% , #ddd 100%);
}

.dropdown.active > button,
.dropdown > button:active {
background:#ddd;
box-shadow:inset 0px 3px 6px rgba(0,0,0, 0.125);
}

.dropdown > ul {
margin:0;
list-style:none;
padding:0;
}

.dropdown > .menu {
border:1px solid #ddd;
border-radius:4px;
position:fixed;
top:65px;
display:none;
}
.dropdown > .menu li ,
.dropdown > .menu .item {
padding:6px 12px;
min-width:100px;
font-weight:bold;
}

.dropdown.active > .menu {
-webkit-transform:none;
display:inline-block;
}

</style>


<script>
(function($) {
$.fn.dropdown = function() {
var dropdown = this;
dropdown.find('button').click(function() {
$(this).parent('.dropdown').toggleClass('active');
});

}
})(jQuery);
</script>
<script>
$('.dropdown').dropdown();
</script>


<div class="dropdown">
<button>Open</button>
<div class="menu">
<div class="item">One</div>
<div class="item">Two</div>
<div class="item">Three</div>
<div class="item">Four</div>
<div class="item">Five</div>
</div>
</div>

<div class="dropdown">
<button>Open</button>
<ul class="menu">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
</ul>
</div>

您可以首先关闭除单击的下拉列表之外的所有下拉列表,然后激活/打开当前单击的下拉列表:

var p = $(this).parent();
$('.dropdown').not(p).removeClass('active');

单击外部时关闭下拉列表:

$(window).click(function() {
    $('.dropdown').removeClass('active');
});

并防止通过上面的代码包含下拉本身:

$('.dropdown').click(function(event){
    event.stopPropagation();
});

这是一个演示:https://jsfiddle.net/huvzb305/3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jquery - 单击外部或单击另一个下拉列表时关闭下拉列表/删除活动类 的相关文章

随机推荐

  • 按时间间隔合并两个 pandas 数据帧

    我有两个熊猫数据框 格式如下 df ts pd DataFrame 10 20 1 id1 11 22 5 id1 20 54 5 id2 22 53 7 id2 15 24 8 id1 16 25 10 id1 columns x y t
  • ColdFusion - java对象方法调用

    我正在尝试从我的服务器获取数据源列表 是的 我是服务器所有者 这不是黑客 我认为我通过给出两个例子混淆了这个问题 所以我正在用一个例子和堆栈跟踪编辑这篇文章 Code Create Data Source Object admin new
  • MVC 4 基于 DropDownListFor 选择更改多个显示字段

    MVC 4 根据 DropDownListFor 选择更改字段 首先 与上面的问题几乎相同 但解决方案不适用于这个问题 我有一个包含下拉列表的页面 选择后 它将根据选择更改显示字段 视图中的 javascript 是
  • 我可以从 VBScript 初始化用 JScript 编写的对象吗?

    我正在尝试编写 WSH 登录脚本 全公司的管理员需要能够自定义脚本的执行 并针对特定位置和用户执行其他脚本 为了让他们的工作更轻松 我想提供一个 API 管理员可以在他们的脚本中访问 如果我使用 JScript 编写 API 是否可以通过
  • 什么是比较两个 SQL Server 数据库的免费工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 什么是比较两个 Sql S
  • 按字母顺序对逗号分隔列表进行排序 PHP [重复]

    这个问题在这里已经有答案了 我将 PHP 变量中的数据放在逗号分隔的列表中 这是数据 其中一部分是为了节省空间 xyz Europe France Italy Spain UK US Nordic West Europe Belgium L
  • jquery.d.ts 编译失败:TsLint:超出最大行长度

    我正在使用 VS 2013 和 TypeScript 0 95 版本 但 linter 无法进行 TS 编译并出现以下错误 TsLint 已检查 app ts TsLint jquery d ts 编译失败 TsLint 超过最大行长度 1
  • 如何从数据表更新面板[重复]

    这个问题在这里已经有答案了 带有 id myButtonId2 的命令按钮工作正常 我的意思是它更新 myOutputPanel 但数据表内的命令按钮不会更新outputPanel 数据表有特定的更新样式吗
  • Stripe Connect Firebase 功能

    仔细查看后 尝试通过 swift 捕获代码 但仍然需要一个函数来触发代码以获取 Express 帐户进行连接 不会在代码尝试上浪费您的时间 因此寻找 Firebase 函数来设置 Stripe Connect 端点以进行重定向并发回代码以完
  • 提高请求的下载速度

    我正在编写一个从 Dropbox 下载一些视频的脚本 通常我的下载速度约为 150 kb 秒 这是在 Firefox 或 IDM 上使用普通下载器时的情况 但使用此 Python 脚本时 速度变得太慢 不到 10 kb 秒 这是我正在使用的
  • 在 Xcode 中禁用“/* inside block comment”警告

    我在开发时经常需要多个嵌套的多行 或 部分行 注释 Xcode 最近引入了可能是世界上最烦人的警告 它迫使我禁用 警告作为错误 我猜这个警告是为了捕获一种极其罕见的情况 即某人打字错误并导致块 注释没有结束 但 IME 还有许多其他问题会导
  • shebang/hashbang 是做什么用的?

    除了使 AJAX 内容可供 Google 抓取外 shebangs hashbangs 是否还有其他用途 或者就是这样 在 URL 中使用的哈希早在 Ajax 发明之前就已经存在了 它最初的目的是作为页面内子部分的引用 在这种情况下 例如
  • 批量更新xml文件

    我已经搜索了一个小时但没有成功 我的老板希望它是一个批处理文件 我有一个 xml 文件 其中包含以下内容
  • PowerShell 的 Invoke-RestMethod 相当于curl -u(基本身份验证)

    相当于什么 curl u username password 在 PowerShell 中Invoke RestMethod 我试过这个 securePwd ConvertTo SecureString password AsPlainTe
  • iOS 8.1 自动旋转

    在我的项目中 我检查了我需要的所有方向类型 这在 iOS 7 1 上工作正常 但在 iOS 8 1 上无法正常工作 在 iOS 8 1 中 当我以纵向或横向模式打开应用程序时 它工作正常 但在使用过程中我旋转设备时 只有状态栏会更改旋转 我
  • Rails 3/delayed_job - Wanted:延迟邮件的基本示例

    我一直在试图弄清楚如何使用elasted job和rails 3发送延迟邮件 我已经尝试了几乎所有我能想到的可行可能性的组合 我可以让邮件在后台运行 我就是可以 不要让它延迟发送到未来的时间 数据库中的delayed jobs表清除任务 日
  • 如何自动检测Excel中的表格

    我有一本工作簿 其中包含大约 40 个表格 每个文件中的表格都非常混乱 因此您永远不知道表格可能位于工作表中的位置 在某些工作表中 您甚至可能有 2 个或 3 个表 此外 这些表非常非结构化 因此您无法知道行索引或列索引总是在哪里 我确实需
  • 在 DOS 中获取没有回显的键盘输入

    我正在制作游戏 Connect Four 玩家必须输入 1 4 之间的数字 以便圆盘落入其中一列 我目前正在研究第一专栏 问题是你可以输入任何字符并且它会起作用 它只需要在你按 1 时起作用 并且我不知道如何修复它 此外 该数字出现在屏幕左
  • 使用 crontab 执行 php

    我正在尝试按计划运行 php 脚本 所以我认为 crontab 是个好主意 我使用的服务器是Linux 我不太熟悉 所以我遇到的问题是 我不知道如何使脚本从 php 可执行 我需要引用该脚本 或者将其放入可以从命令行运行 php 的文件夹中
  • Jquery - 单击外部或单击另一个下拉列表时关闭下拉列表/删除活动类

    我刚刚创建了自己的 jquery 插件 并且有一个下拉菜单 可以在单击自身时切换 活动 类 我只想在单击元素外部或单击其他下拉列表时删除 活动 类 每个下拉菜单都有不同的标记 但具有相同的类 我通过调用以下命令通过 jquery 初始化了它