jQuery延迟切换Class/removeClass/addClass
jQuery toggleClass/removeClass/addClass with delay
我正在尝试使用jQuery,这对我来说总是一场噩梦。
我有4个不同的下拉菜单,在单击元素时添加了一个类。我正在尝试使用jQuery来检查是否有任何下拉菜单具有开放类,如果是,则删除它并延迟将开放类添加到单击的其他元素。
<div class="parent-container">
<img src="http://www.placehold.it/263x263" alt="#" class="img-responsive">
<hr>
<i class="fa fa-arrow-down fa-lg xbox-toggle"></i>
</div>
<ul class="xbox-container">
<li class="price-single">
<img src="http://www.placehold.it/200x200" alt="#">
<h4>Title</h4>
<p>£39.99</p>
</li>
<li class="price-single">
<img src="http://www.placehold.it/200x200" alt="#">
<h4>Title</h4>
<p>£39.99</p>
</li>
<li class="price-single">
<img src="http://www.placehold.it/200x200" alt="#">
<h4>Title</h4>
<p>£39.99</p>
</li>
</ul>
</div> <!-- end col -->
<div class="col-lg-3">
<div class="parent-container">
<img src="http://www.placehold.it/263x263" alt="#" class="img-responsive">
<hr>
<i class="fa fa-arrow-down fa-lg playstation-toggle"></i>
</div>
<ul class="playstation-container">
<li class="price-single">
<img src="http://www.placehold.it/200x200" alt="#">
<h4>Title</h4>
<p>£39.99</p>
</li>
<li class="price-single">
<img src="http://www.placehold.it/200x200" alt="#">
<h4>Title</h4>
<p>£39.99</p>
</li>
<li class="price-single">
<img src="http://www.placehold.it/200x200" alt="#">
<h4>Title</h4>
<p>£39.99</p>
</li>
</ul>
</div> <!-- end col -->
$('.xbox-toggle').click(function() {
$('ul.xbox-container').toggleClass('price-cont-open');
if($('ul.playstation-container').hasClass('price-cont-open')){
$('ul.playstation-container').removeClass('price-cont-open');
$('ul.xbox-container').addClass('price-cont-open').delay(1000);
};
});
这是一个使用jQuery.Deferred()
的基本示例,类似于Promise ES6规范的jQuery实现。
因此,希望它能有所帮助:看看self.sleep
方法,以及它如何与promise链结合工作。。。
function ExampleCtrl($) {
var self = this;
self.ACTIVE_CLASS = 'active';
self.list = $('.example');
self.items = $('> li', self.list);
self.sleep = function(ms) {
ms = ms || 1000;
var deferred = $.Deferred();
window.setTimeout(function() {
deferred.resolve();
}, ms);
return deferred.promise();
};
self.items.click(function(event) {
event.preventDefault();
var current = $(this);
return $
.when(current.toggleClass(self.ACTIVE_CLASS))
.then(function() {
return self.sleep(3000);
})
.then(function() {
return current.next();
})
.then(function(sibling) {
return sibling.toggleClass(self.ACTIVE_CLASS);
})
;
});
}
jQuery(document).ready(ExampleCtrl);
.active {
background-color: lightseagreen;
}
ul {
display: block;
margin: 0;
padding: 0;
}
li {
display: block;
padding: .5em 1.5em;
text-transform: uppercase;
transition: 150ms all linear;
background: lightcoral;
margin: 2px 0;
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="example">
<li class="active">Item 1</li>
<li class="">Item 2</li>
<li class="">Item 3</li>
<li class="">Item 4</li>
<li class="">Item 5</li>
<li class="">Item 6</li>
<li class="">Item 7</li>
<li class="">Item 8</li>
<li class="">Item 9</li>
</ul>
相关文章:
- 什么是“;右“;使用addClass/delay/removeClass的方法
- jQuery addClass/removeClass转换不是平滑的,而是断断续续的
- removeClass(如果单击addClass)
- 有人可以帮助我调试带有addClass和removeClass函数的“每个会话一次”cookie吗?
- jQuery addClass/removeClass在调试期间工作,但不能正常执行
- 无法获取removeClass或addClass的angularjs动画类断点
- 在IE9和jQuery上选择addClass和removeClass
- Jquery AddClass and RemoveClass
- 如何使用addclass和removeclass方法更改textarea(NicEdit中使用的textarea)的cs
- 我的addClass和removeClass代码似乎不适用于Bootstrap Glyphicons
- addClass 和 removeClass 无法正常工作
- addClass/removeClass doesn't apply
- Animating addClass & removeClass with jQueryUI or CSS
- 为 addClass/removeClass 提供持续时间
- 使用 jquery 将动画效果添加到 addClass/removeClass
- JQuery - ToggleClass/AddClass/RemoveClass
- addClass/removeClass 基于所选项目数据属性
- jQuery RemoveClass/addClass analog Javascript
- jQuery延迟切换Class/removeClass/addClass
- 我的javascript removeClass + addClass时,点击只在Chrome上工作,而不是Firefo