$(document).ready(function() {
$('.show').click(function() {
let thisText = $(this).text();
$(this).siblings('.search').fadeToggle().focus();
if (thisText !== 'Скрыть') {
$(this).text('Скрыть');
$(this).siblings('.list').addClass('scroll');
} else {
$(this).text('Посмотреть все');
$(this).siblings('.list').removeClass('scroll');
}
});
});
div .search {
margin-bottom: 30px;
display: none
}
.list {
margin-bottom: 30px;
height: 100px;
overflow-y: hidden;
}
.list label {
display: block
}
.scroll {
color: #999;
overflow-y: scroll;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<h4 class="title">Регион</h4>
<div>
<input type="text" class="search form-control">
<div class="list">
<label>
<input type="checkbox" checked>
<span>Абруццо</span>
</label>
<label>
<input type="checkbox">
<span>Альто-Адидже</span>
</label>
<label>
<input type="checkbox">
<span>Аминдеон</span>
</label>
<label>
<input type="checkbox">
<span>Апулия</span>
</label>
<label>
<input type="checkbox">
<span>Арагацотн</span>
</label>
<label>
<input type="checkbox" checked>
<span>Абруццо</span>
</label>
<label>
<input type="checkbox">
<span>Альто-Адидже</span>
</label>
<label>
<input type="checkbox">
<span>Аминдеон</span>
</label>
<label>
<input type="checkbox">
<span>Апулия</span>
</label>
<label>
<input type="checkbox">
<span>Арагацотн</span>
</label>
</div>
<button class="show btn btn-primary">Посмотреть все</button>
</div>
</div>
这是我在 javaScript 中尝试做的事情:
document.querySelectorAll('.show').forEach(item => {
item.addEventListener('click', function(e) {
console.log('Click');
this.textContent('скрыть');
}.bind(this), false);
});
控制台显示“点击”,但文字没有改变,我用不同的方式尝试过,没有。
textContent
是属性,不是方法。应该是this.textContent = 'скрыть';
。而且bind
这里不需要。此外,在这里您可以安全地使用箭头功能。那么一切都将没有这个,并且以现代的方式......
编辑:这是一个更好的版本
没有 jQuery 的函数: