jQuery如果没有类不触发功能
jQuery if does not have class do not trigger function
我将直奔主题。基本上,我有以下HTML结构:
<div id="global-container">
<div class="content-pusher">
<a class="mobile-menu-btn" href="#">Mobile menu btn</a>
</div>
</div>
在 JavaScript/jQuery 之后:
$(function() {
// Side panel.
$('.content-pusher').click(function(e) {
$this = $(this);
if ($this.parents('#global-container').hasClass('side-panel-open'))
{
$this.parents('#global-container').removeClass('side-panel-open');
}
});
$('.mobile-menu-btn').click(function(e) {
e.preventDefault();
$('#global-container').addClass('side-panel-open');
});
});
问题是我想在单击Mobile menu btn
时添加一个类side-panel-open
#global-container
,并在单击content-pusher
div时将其删除。
问题:当我单击Mobile menu btn
时,它会side-panel-open
类添加到div #global-container
并立即将其删除,因为Mobile menu btn
在 content-pusher
内部。(我不能把它放在那个div 之外)。
起初我认为$('.content-pusher').click...
触发器早于$('.mobule-menu-btn').click...
它应该可以工作,但事实并非如此,因为当我检查 #global-container
div 上是否有类side-panel-open
时,它返回 TRUE,即使这个类被添加到该函数之后。
JSFiddle: http://jsfiddle.net/xFdKx/
我建议处理#global-container
上的点击,并检查它们的来源:
$('#global-container').on('click', 'div.content-pusher, a.mobile-menu-btn', function(e){
$('#global-container').toggleClass('side-panel-open', $(e.target).is('a.mobile-menu-btn'));
});
JS小提琴演示。
引用:
-
event.target
(jQuery). -
event.target
(DOM) -
is()
. -
on()
. -
toggleClass()
.
您可以阻止从 mobile-menu-btn
元素传播单击事件
$(function () {
// Side panel.
$('.content-pusher').click(function (e) {
//since you have the id of the element there is no need to use the parents method here
$('#global-container').removeClass('side-panel-open');
//$(this).parents('#global-container').removeClass('side-panel-open');
});
$('.mobile-menu-btn').click(function (e) {
$('#global-container').addClass('side-panel-open');
return false;
});
});
演示:小提琴
相关文章:
- 如何知道元素在屏幕上是否可见.如果没有,请滚动页面
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- 如果没有互联网连接,Android WebView离线消息
- 如果没有历史记录,我如何隐藏图像或按钮onclick=;历史.go(-1);
- 如果没有从下拉列表中选择任何值,则允许使用php、mysql、javascript将文本框添加到mysql表中
- 如果没有Ember中的控制器,我如何更改查询参数
- 如果没有添加PHP&Javascript
- 如果没有其他函数链接到promise,则默认行为
- 如果没有document.ready(),我怎么能拥有多个javascript函数呢
- 如果没有任何输入,如何启用按钮
- 有没有一个javascript库可以生成这样的垂直切片背景图像?如果没有,我怎么能创建它
- Jquery自动完成:如果没有选择任何项目,则使tab键选择第一个项目
- 如果设置了位置,如何在每个状态下检查路由器ui,如果没有,则转到登录页
- 如何从网站获得apple touch图标,如果没有;不存在,则显示收藏夹
- 自动单击按钮(如果没有类)
- 我可以通过使用函数绑定来保留默认值吗?如果没有,为什么
- 找到所有元素,如果没有类,则使用 jQuery 添加其他类
- ng,如果没有捕获更新的$scope值
- 从数组中删除值,用新的数组总数更新html或'$'如果没有总计
- jQuery如果没有类不触发功能