我有一个<ul>
,它像手风琴一样工作。
在所有<li>
的循环中,我不再有这个要求,我尝试将其作为参数传递给函数,但它不起作用
$('.form-trigger').on('click', function() {
var parent_li = $(this).closest('li');
var parent_ul = $(this).closest('.form-list');
console.log(parent_li);
var current_li = parent_li
parent_ul.find('li').each(function(current_li) {
if( $(this).hasClass('active') && $(this) != current_li ) {
$(this).removeClass('active');
$(this).find('.inner__form-list').slideToggle();
}
} );
parent_li.toggleClass('active');
parent_li.find('.inner__form-list').slideToggle();
parent_li.find('span').toggleClass('close-form-item');
});
.form-trigger
->这是<a>
标记,它与父li
并添加类active
答案 0 :(得分:0)
只需更改
parent_ul.find('li').each(function(current_li) {
到
parent_ul.find('li').each(function() {
和current_li
会在您的.each()
循环内显示,因为它在范围内。
也在;
的末尾添加一个var current_li = parent_li
。
我希望代码的另一部分正在做您想要的事情。
答案 1 :(得分:0)
$('.form-trigger').on('click', function() { var parent_li = $(this).closest('li'); var parent_ul = $(this).closest('.form-list'); console.log(parent_li); var current_li = parent_li; parent_li.siblings().removeClass('active').find('.inner__form-list').slideUp(); parent_li.toggleClass('active'); parent_li.find('.inner__form-list').slideToggle(); parent_li.find('span').toggleClass('close-form-item'); });
使用.siblings()可以,但是谢谢您的回答。
答案 2 :(得分:-1)
您可以执行以下操作。
$('.form-trigger').on('click', function() {
var parent_li = $(this).closest('li');
var parent_ul = $(this).closest('.form-list');
console.log(parent_li);
var current_li = parent_li
var self = this;
parent_ul.find('li').each(function(current_li) {
if( $(self).hasClass('active') && $(self) != current_li ) {
$(self).removeClass('active');
$(self).find('.inner__form-list').slideToggle();
}
} );
parent_li.toggleClass('active');
parent_li.find('.inner__form-list').slideToggle();
parent_li.find('span').toggleClass('close-form-item');
});
这是将this的值存储在变量中(通常devs将其命名为self)并在循环中使用它。