2013-04-23 17 views
21

Ich habe eine Funktion, die divs basierend auf Kontrollkästchen versteckt.Verwenden von jQuery .hide() mit Fading

JS Fiddle of it working here Real site example here

Ich versuche es Animation zu geben, damit die .hide() verblassen in/out, anstatt einfach zu verschwinden.

Versucht, die jQuery Fade-Funktion verwendet wurden, jedoch als Parameter für .hide() aber scheint nicht

$("div").click(function() { 
     $(this).hide("fade", {}, 1000); 
}); 

Ich habe versucht, dies in meinem Code zu arbeiten (siehe JS Fiddle), wie die folgenden:

if(allSelected.length > 0){ 
      $("div.prodGrid > div:not(" + allSelected + ")").hide("fade", {}, 1000); 
     } 

Wohin gehe ich falsch?

+0

Wichtig ist hierbei zu beachten ist, dass die 'hide()' Methode überhaupt keine Wirkung Argument nimmt. Lesen Sie [die Dokumentation der Methode] (http://api.jquery.com/hide/), um die verschiedenen Argumente zu sehen. In solchen Methoden ist das erste Argument oder die erste Argumenteigenschaft normalerweise das Argument 'duration'. – Boaz

Antwort

46
$("div").click(function() { 
    $(this).fadeOut(1000); 
}) 

Es gibt auch fadeIn und fadeToggle.

+0

Dieser Daumen hoch war für jquery – tObi

+5

Dies technisch nicht beantwortet die Frage, da zeigen und verbergen Arbeiten auf dem Display und die Fade-Methoden arbeiten auf Opazität. – neil1967

12

Sie @ Arnelle-Lösung nutzen können, wenn Sie

Fadeout oder

wollen ersetzen $(this).hide("fade", {}, 1000); mit

 $(this).hide("slow");//or $(this).hide(1000); 

vorbei "langsam" eine nette Animation geben, bevor Ihr div versteckt.

Ihre Geige mit Änderungen Geändert: http://jsfiddle.net/Z9ZVk/8/

+0

Arnelles Antwort blendet aus. Animation mit Verstecken und Zeigen ist anders als Ausblenden ... Es ist cooler als Ausblenden und Einblenden – codefreak

+0

Das ist wirklich toll, aber es funktioniert nicht, wenn die Filter kurz nacheinander angeklickt werden, ganz typisch für E-Commerce. Denke, ein einfacher Fade könnte besser funktionieren. Das ist aber toll! – Francesca

1

Versuchen fadeout mit Dauer statt mit auszublenden verwenden.

if(allSelected.length > 0){ 
     $("div.prodGrid > div:not(" + allSelected + ")").fadeOut(1000); 
    } 

Working Fiddle

1

Ich habe den Code in dem unten stehenden Link versuche, seine Arbeit gut.

Using jQuery .hide() and .show() with fading - Live Demo

$("#btnHideShow").click(function() { 
      if ($("#btnHideShow").val() == "Hide") { 
       $("#imgHideShow").hide(1000); 
       $("#btnHideShow").attr("value", "Show"); 
      } 
      else { 
       $("#imgHideShow").show(1000); 
       $("#btnHideShow").attr("value", "Hide"); 
      } 
     }); 

Sie auch fadeIn, fadeOut, slideUp und slidedown mit JQuery von thebelow Link finden können.

fadeIn fadeOut and slideUp slideDown Effects Using Jquery