如何在if语句中指定一个事件作为条件(jQuery)
How to assign an event as a condition in if statement (jQuery)?
我正在制作一个导航栏。我想用if
语句检查slideUp()
是否应用于ul
,如果应用了,那么我想在父li
中将classToggle()
应用于<span>
<li class="main"><span class="arrow-up"></span>
<ul class="sub">
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
</li>
<li class="main"><span class="arrow-up"></span>
<ul class="sub">
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
</li>
我使用下面的代码来关闭活动子菜单,一旦另一个被点击,并切换'arrow-up arrow-down'
类,但我想切换这些类只有当子菜单被滑动,所以我想在if
语句中插入.slideUp()
事件,如何做到这一点?
$('.main').click(function(){
$('ul',this).slideToggle('fast');
// slide up the current active ul
$('ul','.main').not($('ul',this)).slideUp('fast');
$('span',this).toggleClass('arrow-up arrow-down');
$('span','.main').not($('span',this)).toggleClass('arrow-up arrow-down');
}
当你在元素上使用.slideToggle()
时,你可以为它添加一个类,并使用这个类来检测元素是否被切换。
也可以使用if ( $('.element').is(':visible') ) { //Do something
如果正确理解问题?尝试使用.slideToggle()
, .prev()
的complete
回调来选择最接近的span
元素
$(".main").click(function() {
var complete = function complete() {
$(this).prev("span").toggleClass("arrow-up arrow-down");
};
$("ul", this).slideToggle("fast", complete)
.promise()
.then(function() {
var elems = $("ul", ".main").not(this);
if (elems.is(":visible") && $(this).is(":visible")) {
elems.slideToggle("fast", complete);
}
});
});
.arrow-down {
color: blue;
}
.arrow-up {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<ul>
<li class="main"><span class="arrow-up">span</span>
<ul class="sub">
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
</li>
<li class="main"><span class="arrow-up">span</span>
<ul class="sub">
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
</li>
</ul>
相关文章:
- 使用类从一个标记中双击事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 导航到特定事件的另一个变量页面
- 来自文档或下一个静态父级的事件委派
- 在创建对象后附加一个jquery事件
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- 如何在所有ng点击事件AngularJS上启动一个方法
- 是否<asp:文本框>有一个onFocusLost事件
- React应用程序:道具在下一个事件后更新
- 在Angular ui路由器中,如何将事件从一个视图发送到另一个视图
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 全局屏幕span onclick触发一个事件javascript
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 添加一个javascript函数来下载elfinder上的事件
- jQuery触发器事件在一个循环中多次出现
- 'mousemove'画布中的事件侦听器-指针仅在最后一个矩形中更改
- 是否可以同时为一个元素的所有事件指定阻止默认值
- angularjs调用事件中控制器的一个函数