双击从(文档)而不是一次关闭选择下拉菜单
Double clicks from (document) instead of one to close select dropdown
我有一个下拉列表,我想,如果点击选择标签添加类'active'到span标签,如果再次点击删除它。但我也想,如果我点击文档页面,它应该删除类'active',如果它添加到span标签。它的工作. .但是我应该从文档中双击而不是一个来删除活动类。我相信有一个更短更好的代码来做这个技巧,但无论如何它的工作有点像:)如有任何帮助,不胜感激
这里是基本的html:<select class="qty">
<option>1</option>
<option>2</option>
</select>
<span class="arrow"></span>
Jquery: jQuery(document).ready(function($) {
var arrow = $('.arrow');
$(".qty").on('click', function(e) {
e.stopPropagation();
if(arrow.hasClass('active')) {
arrow.removeClass('active');
}
else {
arrow.addClass('active');
}
});
$(document).on('click', function(e) {
e.stopPropagation();
if(arrow.hasClass('active')) {
arrow.removeClass('active');
}
else {
return false;
}
});
});
JSFIDDLE
我认为"双击"的问题是,当你在下拉菜单中选择一个选项时,它仍然集中(浏览器行为)。这意味着你需要点击两次,而不一定是双击。首先,你需要点击其他地方来移除焦点,只有这样body元素才能听到你的点击。
不知道你在做什么,也许这不是你最好的选择。您可以考虑使用DIV或UL LI元素创建自己的下拉列表。然而,如果你想修补浏览器的行为,你可以强制它模糊(不聚焦)。您需要将触发器更改为更改而不是单击,否则在您进行选择之前会使其模糊。
jQuery(document).ready(function($) {
var arrow = $('.arrow');
$(".qty").on("change", function(e) {
e.stopPropagation();
arrow.toggleClass("active");
$(this).blur();
});
$(document).on('click', function(e) {
arrow.removeClass('active');
});
});
另外,请注意您可以使用。toggleClass而不是if语句,在您的情况下,您不需要检查是否。活动类已经存在,您可以简单地删除它。
这是更新后的JSFiddle
相关文章:
- 根据Angular.JS上一次的内容禁用选择
- 在一组复选框中,一次只允许选择一个
- Jquery选择选项并获取只工作一次的更改值(页面加载时)
- 我如何可以忽略以前的选择,只写最后一次选择
- 在angularjs中一次选择一个项目
- 一次选择一个图像
- 无法在一次选择中选择多个值
- 如何使用 jQuery 选择多个文件.多文件.js插件?使用单个关闭按钮一次选择多个文件
- Javascript 一次选择所有单选按钮
- Javascript一次选择一行
- 使用下拉列表一次选择一个图表
- 在“选择将打开选项卡更改为新url”上.但是,如果在下一次选择更改时关闭了选项卡,该怎么办
- 使用一个文件元素上传多个文件(没有多个选项).并一次选择一个文件
- Highcharts一次选择多个点
- 如何将一次选择的更改事件的数据附加到第二次选择
- Jquery一次选择所有选中和选中的元素
- 如何一次选择数组中的所有项目,并为它们添加类
- 在angularjs中,如何在不使用单选按钮的情况下一次选择一个复选框
- 一次选择多个数组元素
- 使复选框可以像单选按钮一样一次选择一个