在外面单击时隐藏多个元素的最有效方法
Most efficient way to hide multiple elements on click outside?
好的,所以我们都知道这种在元素(和多个元素)之外单击时隐藏元素(和多个元素)的方式(即元素失去焦点):
$('document').on('click', function () { $(element).hide(); });
$(element).on('click', function (e) { e.stopPropagation(); /* ka-chow! */ });
这意味着到达文档的任何单击事件都将隐藏该元素,而元素内的任何单击都不会传播到文档,也不会触发单击事件。
这一切都很好,绝对不是新闻。
但是,我有一个复杂而丰富的 UI。此接口具有许多需要此类行为的元素。假设每个事件只需要隐藏一个元素。我是否需要每次遍历整个地段,才能找到我想隐藏的一个元素?
如果是这样,最有效的方法是什么?给它们一个唯一的类名?或者将每个元素的类名/ID/DOM 实例存储在一个数组中,每次都遍历它?对我来说,每个解决方案听起来都比其他解决方案效率低下。
你会怎么做?
假设:
-
这些元素由javascript显示/隐藏。
-
规则是它显示得越晚,它隐藏得越早。
然后我将维护一个数组来处理它,例如:
var displayedElements = [];
...
// called when you want to display an element
function showUp (ele) {
// push element into array
displayedElements.push(ele);
...
}
// called when you want to close the last displayed element
function closeOneIfAvailable () {
var len = displayedElements.length;
if (len > 0) {
var idx = len - 1;
hideIt (displayedElements[idx]);
displayedElements.splice(idx, 1);
}
}
// called when you want to hide an element
function hideIt (ele) {
...
}
相关文章:
- 在jQuery中创建向下滑动子菜单的最有效方法
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 选择具有值数组的所有元素的最有效方法
- 将JSON存储和恢复到此Ionic应用程序的最有效方法
- 将javascript数组中的项移动到特定位置的有效方法
- 将JS对象数组转换为嵌套形式的最有效方法
- 隐藏具有特定类$.each、for等的元素的有效方法
- 什么's是调用具有可变参数的函数的有效方法
- 选择具有特定数据的所有 html 标记的最有效方法是什么 - [适当性],无论值如何
- 使用 jQuery 调用 PHP 端点的最有效方法
- 这是解析 Int 的有效方法吗?
- 在JavaScript中搜索数组映射的最有效方法
- 获取字符串中最后一个换行符的最有效方法是什么
- 什么's是在两个(或多个)阵列中找到匹配的细胞序列的最有效方法
- 什么's是在IE8+中添加元素的最有效方法
- 从任何jquery选择器字符串创建元素的最有效方法
- 在日期范围内查找丢失日期的最有效方法是什么
- 对区间[1,10^12]中的整数进行编码/解码的快速有效方法是什么
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- 在ASP.NET中使用JQuery UI自动完成的有效方法