2016-08-05 94 views
-2

因此,我目前正試圖弄清楚如何使用jQuery提供的.show()和.hide()功能來顯示和隱藏div類或p類包含一些文本,我希望能夠在div-parent內部單擊以顯示上下文。不要有按鈕,但我們假設我將鼠標懸停在包含簡短文本和徽標的div類上,背景會發生變化,我希望能夠點擊此類並在父類中顯示隱藏的內容。沒有按鈕的jQuery顯示和隱藏元素

我會嘗試用下面的圖片ilustrate此:

enter image description here

所以以後我在div級點擊這應該擴展現有的類,並顯示被隱藏的內容:

enter image description here

我希望有人能讓我走上正確的軌道,並幫助我解決這個問題。 乾杯

+3

後一些代碼的方法的另一種方式。你嘗試過什麼嗎?什麼不行? – Christophvh

+1

你能發表一些你寫的代碼嗎? – evolutionxbox

+1

請在OP中發佈所有相關代碼而不僅僅是圖片 – guradio

回答

1

你可以解決您的關注純懸停上的CSS。檢查這是你在找什麼!

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

或者你可以使用jQuery!

注:此代碼是保留transitiondiv與動態高度膨脹。

更新

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

是的,純CSS將是最好的選擇。 – Shamppi

+0

謝謝你的回答!所以我認爲這會做到這一點,但是有沒有一種方法可以根據內容的長度來擴展div高度?讓我們假設div1的內容是div2的兩倍,但我不希望兩者的高​​度相同。我仍然希望淡化效果在那裏,試圖將高度設置爲相對或自動,但是這似乎消除了過渡? – magnusnn

+0

我已經更新了我的答案,希望能幫到你! –

0

當主容器元素被點擊找到所有與hidden-text類單擊元素的兒童,並給他們。

$(".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

謝謝您的回答,並對遲到的回覆感到抱歉!所以我試過了你的解決方案,但是我怎麼只做一個div塊來一次顯示呢?基本上,如果打開的div容器失去焦點,我希望它被隱藏。例如,如果我顯示第一個並將其中一個打開,然後單擊第二個,我希望第一個再次褪色並隱藏。如果我點擊「隱藏文本」或打開的「容器本身內的某處,應該再次隱藏它。 – magnusnn

+0

我更新了我的答案,這是你想要的嗎? – Wowsk

+0

嗯,是的,其中一些,但是如果我在空白頁上點擊外部,我想隱藏每個打開的div塊。有沒有一個更簡單的方法做到這一點比我想出的: $(document).ready(function(){ $(「body」)。click(function(e){if($(e.target ).attr( '類')=== 「容器」){ 通; } 其他{ 「容器 」 $()兒童(「 隱藏的文本」),隱藏();} }); }); – magnusnn

0

請不要使用參考純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; }