用于显示/隐藏叠加的简单触发器元素(最佳实践)
Simple trigger element for show/hide overlay (best practice)
我很困惑。我有一个简单的触发器元素,它显示/隐藏一个元素,但我似乎永远无法让它只使用一个元素。我想这可能是我构建JS的方式,但我不明白为什么它不起作用。下面是一些做同样事情的变体,但它们似乎都不起作用。
帮忙吗?谢谢。
function overlays() {
$('.header-container .info-trigger').on('click touchstart', function(e) {
$(this).addClass('active');
$('body').addClass('overlay-open');
$('.info-overlay').fadeIn('fast');
e.preventDefault();
});
$('.header-container .info-trigger.active').on('click touchstart', function(e) {
$('.info-overlay').fadeOut('fast', function() {
$('.info-overlay').removeAttr('style');
});
$('body').removeClass('overlay-open');
e.preventDefault();
});
}
overlays();
function overlays() {
if ($('body').is('.overlay-open')) {
$('.header-container .info-trigger').on('click touchstart', function(e) {
$('.info-overlay').fadeOut('fast', function() {
$('.info-overlay').removeAttr('style');
});
$('body').removeClass('overlay-open');
e.preventDefault();
});
} else {
$('.header-container .info-trigger').on('click touchstart', function(e) {
$('body').addClass('overlay-open');
$('.info-overlay').fadeIn('fast');
e.preventDefault();
});
}
}
overlays();
function overlays() {
$('.header-container .info-trigger').on('click touchstart', function(e) {
$('body').addClass('overlay-open');
$('.info-overlay').fadeIn('fast');
e.preventDefault();
});
$('body.overlay-open .header-container .info-trigger').on('click touchstart', function(e) {
$('.info-overlay').fadeOut('fast', function() {
$('.info-overlay').removeAttr('style');
});
$('body').removeClass('overlay-open');
e.preventDefault();
});
}
overlays();
每次点击请绑定文档
$(document).on('click touchstart','.header-container .info-trigger', function(e) {
如果仍然不工作,则显示错误控制台
$('body').is('overlay-open')
应为
$('body').is('.overlay-open')
您似乎错过了类选择器。到处都是。
在你的它正在检查一个名为overlay-open
的元素,我认为这是一个类,你正在应用到身体。
根据条件添加点击事件也是一个坏主意。
更好的方法是分配一个事件处理程序,并在其中使用条件来使其工作。
function overlays() {
$('.header-container .info-trigger').on('click touchstart', function (e) {
e.preventDefault();
var $this = $(this); // cache selector
// Check for active class and do the action
if ($this.hasClass('active')) {
$('.info-overlay').fadeOut('fast', function () {
$('.info-overlay').removeAttr('style');
});
$('body').removeClass('overlay-open');
} else {
$this.addClass('active');
$('body').addClass('overlay-open');
$('.info-overlay').fadeIn('fast');
}
});
}
overlays();
相关文章:
- 从数组中删除元素的最佳方法是:javascript/jquery
- 列出没有 mysql 的元素的最佳方法是什么
- 列出每行2个元素的最佳方式是按角度重复ng
- 让 jquery 为 ajax 添加的元素工作的最佳方法是什么?
- 在保持元素一致性的同时旋转数组元素的最佳方式'id
- 使用 V8 从密集数组中删除元素的最佳方法是什么
- 迭代JSON对象并将元素打印到屏幕上的最佳方式是什么
- 复制元素的最佳方式是:只复制元素的类型和属性
- 将元素保留在 DIV 中而不继承页面样式的最佳方法
- 使用 jQuery 创建嵌套 HTML 元素的最佳方式
- 创建画布元素的最佳做法
- 在 JavaScript 中创建元素的最佳方法
- 使用innerHTML想法添加大量html元素的最佳方法是什么
- 当文档中的单个元素准备就绪时触发事件的最佳方法
- 检查元素是否有类的最佳方法是什么
- 删除 js 数组中的 html 元素的最佳方法
- 使用 JavaScript 将 DOM 元素添加到 Body 的最佳方法
- 在 DOM 中测试元素的最佳方法是什么?
- jQuery中根据其数据属性包装元素的最佳方法是什么?
- 用于显示/隐藏叠加的简单触发器元素(最佳实践)