Javascript jquery显示更多/关闭错误
我为每个Javascript jquery显示更多/关闭错误,javascript,jquery,hide,show,Javascript,Jquery,Hide,Show,我为每个div编写了“显示更多”/“关闭”代码,并且当我打开一个,然后已经打开了一个先关闭,另一个打开时 问题是当我在同一个div中按close时,它重新打开了它,但没有关闭它。我还输入了代码。不是(这个),但实际上不起作用。问题还在于“滚动到”功能并不能很好地工作 如果我在第一个div上,只需滚动到第二个,然后按close键,它就会跳到文本的中间,而不是像它想象的那样跳到div的顶部 以下是jquery代码: $('.cities').each(function(){ var
div
编写了“显示更多”/“关闭”代码,并且当我打开一个,然后已经打开了一个先关闭,另一个打开时
问题是当我在同一个div
中按close时,它重新打开了它,但没有关闭它。我还输入了代码。不是(这个)
,但实际上不起作用。问题还在于“滚动到”功能并不能很好地工作
如果我在第一个div
上,只需滚动到第二个,然后按close键,它就会跳到文本的中间,而不是像它想象的那样跳到div
的顶部
以下是jquery代码:
$('.cities').each(function(){
var max = 7;
var numLi = $(this).find('li').length;
var list = $(this).find('li:gt(' + max + ')');
var id = '#' + $(this).attr('id');
list.hide();
if(numLi > max){
$(this).find('ul').append('<a class="more" name="'+id+'">Show more</a>');
}
$(this).find('.more').click(function(){
// zapre vse odprte
$('.cities').find('li:gt(' + max + ')').not(this).hide('slow');
$('.cities .more').not(this).text('Show more');
list.toggle('slow');
$(this).text($(this).text() == 'Show more' ? 'Close' : 'Show more');
$('html,body').animate({scrollTop: $(id).offset().top},'slow');
});
});
$('.cities')。每个(函数(){
var max=7;
var numLi=$(this).find('li').length;
var list=$(this.find('li:gt('+max+'));
var id='#'+$(this.attr('id');
list.hide();
如果(numLi>max){
$(this).find('ul').append('您可以使用slideToggle()
)
绑定事件不必遍历每个元素。只需使用$('.more')。
将事件绑定到所有类名为more
编辑
$('.more').click(function(){
var max = 7;
$('.more').not(this).each(function(){
$(this).closest("ul").find('li:gt(' + max + ')').slideUp();
$(this).text('Show more');
});
$(this).closest("ul").find('li:gt(' + max + ')').slideToggle();
$(this).text($(this).text() == 'Show more' ? 'Close' : 'Show more');
});
您可以使用slideToggle()
绑定事件不必遍历每个元素。只需使用$('.more')。
将事件绑定到所有类名为more
编辑
$('.more').click(function(){
var max = 7;
$('.more').not(this).each(function(){
$(this).closest("ul").find('li:gt(' + max + ')').slideUp();
$(this).text('Show more');
});
$(this).closest("ul").find('li:gt(' + max + ')').slideToggle();
$(this).text($(this).text() == 'Show more' ? 'Close' : 'Show more');
});
您可以使用slideToggle()
绑定事件不必遍历每个元素。只需使用$('.more')。
将事件绑定到所有类名为more
编辑
$('.more').click(function(){
var max = 7;
$('.more').not(this).each(function(){
$(this).closest("ul").find('li:gt(' + max + ')').slideUp();
$(this).text('Show more');
});
$(this).closest("ul").find('li:gt(' + max + ')').slideToggle();
$(this).text($(this).text() == 'Show more' ? 'Close' : 'Show more');
});
您可以使用slideToggle()
绑定事件不必遍历每个元素。只需使用$('.more')。
将事件绑定到所有类名为more
编辑
$('.more').click(function(){
var max = 7;
$('.more').not(this).each(function(){
$(this).closest("ul").find('li:gt(' + max + ')').slideUp();
$(this).text('Show more');
});
$(this).closest("ul").find('li:gt(' + max + ')').slideToggle();
$(this).text($(this).text() == 'Show more' ? 'Close' : 'Show more');
});
我如何才能做到所有打开的元素都只关闭,而完全单击的元素都必须显示或关闭。此外,我认为我还需要检查每个元素,因为如果它们只有4个元素,我不需要更多的按钮。就像在我的代码中一样,如果它们只有4个元素,则不追加显示更多/关闭,如果它们是8个,则追加显示更多/关闭。我如何做到这一切打开的只是关闭,完全单击必须显示或关闭。另外,我认为我仍然需要检查每个元素,因为如果它们只有4个元素,我不需要更多的按钮。就像在我的代码中一样,如果它们只有4个元素,则不追加显示更多/关闭,如果它们是8个追加显示更多/关闭。我如何做到这一点,所有打开的元素都只需关闭和精确y单击必须显示或关闭。此外,我认为我仍然需要检查每个元素,因为如果它们只有4个元素,我不需要更多按钮。就像在我的代码中一样,如果它们只有4个元素,则不追加显示更多/关闭,如果它们是8个追加显示更多/关闭。我如何才能做到所有打开的元素都只需关闭,而完全单击的元素必须显示或关闭关闭。我想我还需要检查每个元素,因为如果它们只有4个元素,我不需要更多的按钮。就像在我的代码中一样,如果它们只有4个元素,那么不要追加显示更多/关闭,如果它们是8个追加显示更多/关闭。