2016-08-05 12 views
-2

So versuche ich derzeit herauszufinden, wie Sie mit der .show() und .hide() -Funktion von jQuery eine div-Klasse oder eine p-Klasse ein- und ausblenden Ich möchte in der Lage sein, in den Div-Elternteil zu klicken, um den Kontext anzeigen zu können. Keine Schaltfläche, aber sagen wir, ich schwebe über eine Div-Klasse mit einem kurzen Text und einem Logo, das den Hintergrund ändert, und ich möchte in der Lage sein, auf diese Klasse zu klicken und den versteckten Inhalt innerhalb der Elternklasse anzuzeigen.jQuery Element anzeigen und ausblenden ohne eine Schaltfläche

Ich werde versuchen, dies mitströmen mit den Bildern unten:

enter image description here

So, nachdem ich in der div-Klasse klicken sollen diese die bestehende Klasse erweitern und die versteckten Inhalte zeigen:

enter image description here

Ich hoffe jemand kann mich hier auf den richtigen Weg bringen und mir helfen, das zu lösen. Cheers

+3

Post einige Code. Hast du etwas versucht? Was funktioniert nicht? – Christophvh

+1

Können Sie etwas Code schreiben, den Sie geschrieben haben? – evolutionxbox

+1

Bitte schreiben Sie alle relevanten Code in OP nicht nur ein Bild – guradio

Antwort

1

Sie könnten Ihr Anliegen in reinen lösen CSS beim Schweben. Überprüfen Sie, ob Sie das suchen!

.content:hover, .content2:hover, .content3:hover { 
    height: 200px; 
} 

oder Sie können jQuery verwenden!

Hinweis: Dieser Code ist die transition zu halten, wenn die div mit einer dynamischen Höhe erweitert.

Aktualisiert

jQuery.fn.animateAuto = function(prop, speed, callback){ 
 
    var elem, height; 
 
    return this.each(function(i, el){ 
 
     el = jQuery(el), elem = el.clone().css({"height":"auto"}).appendTo("body"); 
 
     height = elem.css("height"), 
 
     elem.remove(); 
 
     if(prop === "height") 
 
      el.animate({"height":height}, speed, callback); 
 
    }); 
 
} 
 

 
$("document").ready(function(){ 
 
    $(".content, .content2, .content3").hover(function(){ 
 
    var h = $(this).css("height"); 
 
    if(h == '50px'){ 
 
     $(this).animateAuto('height', 20); 
 
    } 
 
    else{ 
 
     $(this).css("height", '50px'); 
 
    } 
 
    }); 
 
});
.content, .content2, .content3 { 
 
    padding: 5px; 
 
    height: 50px; 
 
    width: 25%; 
 
    margin:0 2%; 
 
    float: left; 
 
    position: relative; 
 
    transition: height 0.5s; 
 
    -webkit-transition: height 0.5s; 
 
    text-align: center; 
 
    overflow: hidden; 
 
    background:#666; 
 
    border-radius:5px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="content"> 
 
    <h2>Div 1</h2> 
 
    <p>This is an example! This is an example!</p> 
 
</div> 
 

 
<div class="content2"> 
 
    <h2>Div 2</h2> 
 
    <p>This is an example! This is an example! This is an example! This is an example! This is an example2!</p> 
 
</div> 
 

 
<div class="content3"> 
 
    <h2>Div 3</h2> 
 
    <p>This is an example! This is an example!</p> 
 
</div>

+1

Ja, pure CSS würde OFC die beste Option sein. – Shamppi

+0

Vielen Dank für Ihre Antwort! Also ich denke, das wird es tun, aber gibt es eine Möglichkeit, die div-Höhe basierend auf der Länge des Inhalts zu erweitern? Nehmen wir an, dass div1 die doppelte Menge an Inhalt hat, die mit div2 verglichen wird, aber ich möchte nicht, dass die Höhe für beide gleich ist. Ich möchte immer noch, dass der Fading-Effekt da ist, habe versucht, die Höhe auf relativ oder automatisch zu setzen, aber das scheint den Übergang zu entfernen? – magnusnn

+0

Ich habe meine Antwort aktualisiert, hoffe, dass dir das weiterhilft! –

0

Wenn das Hauptcontainerelement geklickt wird alle Kinder des angeklickten Elements mit der hidden-text Klasse finden und ihnen zeigen.

$(".hidden-text").hide(); 
 
$(".container").click(function() { 
 
    $(".container").children(".hidden-text").hide(); 
 
    $(this).children(".hidden-text").show(); 
 
})
.container{ 
 
    width:100px; 
 
    display:inline-block; 
 
    vertical-align:top; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container">This is a div<div class="hidden-text">This is a bunch of hidden text in the div inside of another div.</div></div> 
 
<div class="container">This is a div<div class="hidden-text">This is a bunch of hidden text in the div inside of another div.</div></div> 
 
<div class="container">This is a div<div class="hidden-text">This is a bunch of hidden text in the div inside of another div.</div></div>

+0

Vielen Dank für Ihre Antwort und Entschuldigung für die späte Antwort! Also ich habe deine Lösung ausprobiert, aber wie mache ich nur einen der div-Blöcke gleichzeitig anzeigen lassen? Wenn der geöffnete Div-Container den Fokus verliert, möchte ich, dass er versteckt bleibt. Zum Beispiel, wenn ich den ersten zeige und diesen offen lasse, und dann auf den zweiten klicke, möchte ich den ersten wieder einblenden und versteckt werden. Das selbe, wenn ich irgendwo innerhalb des 'versteckten Textes' oder auf dem geöffneten 'Behälter selbst klicke, sollte es wieder versteckt werden. – magnusnn

+0

Ich habe meine Antwort aktualisiert, ist das was du willst? – Wowsk

+0

Nun ja, einiges davon, aber wenn ich draußen auf die leere Seite klicke, möchte ich jeden geöffneten Div-Block ausblenden. Gibt es einen einfacheren Weg dies zu tun als das was ich mir ausgedacht habe: $ (document) .ready (function() { $ ("body"). click (function (e) { if ($ (e.target) .attr ('Klasse') === "Container") { Pass; } else { "Container ". $() Kinder (". versteckter Text") hide();} }); }); – magnusnn

0

Bitte eine andere Art und Weise der Annäherung beziehen reine CSS

<div class="box-content"> 
    <h2>Div 1</h2> 
    <p>This is an example! This is an example! This is an example! This is an example! This is an example! This is an example! </p> 
</div> 

<div class="box-content"> 
    <h2>Div 2</h2> 
    <p>This is an example! This is an example! This is an example! This is an example! This is an example! This is an example! </p> 
</div> 

<div class="box-content"> 
    <h2>Div 3</h2> 
    <p>This is an example! This is an example! This is an example! This is an example! This is an example! This is an example! </p> 
</div> 


.box-content { padding: 5px; height: auto; width: 25%; margin: 0 2%; float: left; background: #666; border-radius: 5px; } 
.box-content p { display: none; } 
.box-content:hover p { display: block; color: #fff; } 
Verwandte Themen