2014-05-19 37 views
0

我有这个从隐藏div加载更多内容的jquery代码我打开它,一切工作顺利,但我希望它再次关闭,但我不知道如何去做。 我也想改变loadmore关闭时,它是开放的......如何通过点击功能再次关闭div

帮助 HTML:

<a href="#" id="loadMore">Load More</a> 

$(function() { 
    $("moreinfo").slice(0, 4).show(); 
    $("#loadMore").on('click', function (e) { 
     e.preventDefault(); 
     $("div:hidden").slice(0, 4).slideDown(); 
     if ($("div:hidden").length == 0) { 
      $("#load").fadeOut('slow'); 
     } 
     $('html,body').animate({ 
      scrollTop: $(this).offset().top 
     }, 1500); 
    }); 
}); 
$(window).scroll(function() { 
    if ($(this).scrollTop() > 50) { 
     $('.totop a').fadeIn(); 
    } else { 
     $('.totop a').fadeOut(); 
    } 
}); 

更新:

$(function() { 
     $("div").slice(0, 4).show(); 
     $("#loadMore").on('click', function (e) { 
      e.preventDefault(); 
      $(".moreinfo:hidden").slice(0, 4).slideDown(); 

     }); 
     $(".loadLess").on('click', function (e) { 
      e.preventDefault(); 
      $(".moreinfo:visible ").slice(0, 4).slideUp(); 

     }); 
    }); 

这将使它能够打开和关闭的时候了自动...

+0

你试过'切换()' – manish

+0

同样,如果你看一下我的例子,你会发现我又名选择.slice(-4)最后4个元素并隐藏它们(slideUp)。你负载较少的方式,你隐藏并立即显示4个FIRST元素。 – alou

回答

0

该函数获得,这是隐藏和显示的第一4个元素:用了slideDown功能屏蔽。如果你想再次隐藏它们,你需要在slideDown函数之前引用这些元素。或者,如果这在您的html结构中是适当的,请取最后4个可见的div元素并将其隐藏起来。

因此,像

$("#loadLess").on('click', function (e) { 
    e.preventDefault(); 
    $("div:visible").slice(-4).slideUp(); 
}); 

在这种情况下,一个功能,你需要有一个将触发此功能来运行的元素,最有可能在可见的div结束

<a id="loadLess">Show less</a> 

话虽如此,像div:visible或div:hidden这样的选择器是由于造成麻烦。您应该使用一些特定的类属性,像.contentitems:隐藏什么

编辑: Here's a fiddle link看到它的工作

,这是在的jsfiddle使用的代码

<div class="someclass">some content 1 </div> 
<div class="someclass">some content 1 </div> 
<div class="someclass">some content 1 </div> 
<div class="someclass">some content 1 </div> 
<div class="someclass">some content 1 </div> 

..... 
<span id="loadMore">Load More</span> 
<span id="loadLess">Load Less</span> 

JS

$('div').slice(0, 4).show(); 
$("#loadMore").on('click', function (e) { 
     e.preventDefault(); 
     $("div:hidden").slice(0, 4).slideDown(); 
     if ($("div:hidden").length == 0) { 
      $("#load").fadeOut('slow'); 
     } 
     $('html,body').animate({ 
      scrollTop: $(this).offset().top 
     }, 1500); 
    }); 

$("#loadLess").on('click', function (e) { 
    e.preventDefault(); 
    $("div:visible").slice(-4).slideUp(); 
}); 
+0

不知何故,现在它立即快速打开和关闭 – user2976136

+0

我不知道你的意思是... – alou

+0

当我点击加载更多:它加载更多,它也自动关闭... 我似乎无法去在它附近 – user2976136

0

尝试使用toggle()

http://api.jquery.com/toggle/

下面是关于如何使用它的示例:

JSFiddle

+0

这与提供的示例无关,他(可能不止一次)在每次单击时添加4个元素。切换什么? – alou

+0

@alou他问如何关闭一个打开的div,并且toggle()是一个解决方案。 – Obsivus

+0

不,在这种情况下不是。再次,你会切换哪些元素? – alou

相关问题