[英]Hide all Child Divs except active…Javascript
我試圖建立一個網站,其中有一個絕對居中的Div,里面有內容。 我希望內容根據側面的幾個可點擊按鈕進行更改。 為了做到這一點,我認為最好的情況可能是創建同一個類和父級的幾個子div並隱藏不相關的內容,只顯示與點擊的鏈接相關的內容。 我可以寫出一百萬
document.getElementById("ImAnId").onclick = function helpMePlease( {
document.getElementById("ImAlsoAnId").style.display="none";
}
代碼行。 但有更快更簡單的方法嗎?
為每個按鈕提供一個包含相關DIV ID的數據屬性,例如
<button class="link" data-div="ImAlsoAnId">Click me</button>
然后隱藏給定類的所有DIV,並顯示所選的DIV。
$(".link").click(function() {
$(".divclass").hide();
$('#' + $(this).data("div")).show();
});
您還可以使用jQuery UI Tabs插件。
給按鈕一個id
和相應的容器一個類似的id
(通過連接一些字符串使它與按鈕不同)。 例如,我給按鈕id="red"
並給對應的div id="redD"
。 然后它會使你的JavaScript變得更短。
您也可以使用任何自定義屬性,而不是id
。
這是一個工作片段。
$(".links").click(function(){ var divId = "#"+ $(this).attr("id") + "D"; $(".divs").removeClass("active"); $(divId).addClass("active"); });
.con{ position:relative; width:100%; margin:0; height:150px; } .divs{ position:absolute; width:100px; margin:0; bottom:0; left:0; border:1px solid black; height:100px; display:none; } .divs.active{ display:block; } #redD{ background-color:red; } #greenD{ background-color:green; } #blueD{ background-color:blue; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="con"> <button class="links active" id="green">green</button> <button class="links" id="blue">blue</button> <button class="links" id="red">red</button> <div class="divs active" id="greenD"></div> <div class="divs" id="redD"></div> <div class="divs" id="blueD"></div> </div>
這里'hide'是你要隱藏的div的id。
$("#hide").click(function(){
$("p").hide();
});
這里'show'是你想要展示的div的id。
$("#show").click(function(){
$("p").show();
});
不要忘記在頁面的head部分添加jquery庫。
這是一種使用數據屬性進行過濾的方法。
var $things = $('.things div'); $('a').on('click',function(e) { e.preventDefault(); var activeClass = $(this).attr('data-filter'); $things.show().not('.' + activeClass).hide(); })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <a href="#" data-filter="a">a</a> <a href="#" data-filter="b">b</a> <a href="#" data-filter="c">c</a> <a href="#" data-filter="d">d</a> <div class="things"> <div class="a">a</div> <div class="b">b</div> <div class="c">c</div> <div class="d">d</div> <div class="a">a</div> <div class="b">b</div> <div class="c">c</div> <div class="d">d</div> <div class="a">a</div> <div class="b">b</div> <div class="c">c</div> <div class="d">d</div> <div class="a">a</div> <div class="b">b</div> <div class="c">c</div> <div class="d">d</div> </div>
或者使用CSS隱藏/顯示(更高性能),類似這樣的東西
var $things = $('.things div'); $('a').on('click',function(e) { e.preventDefault(); var activeClass = $(this).attr('data-filter'); $things.removeClass('hide').not('.' + activeClass).addClass('hide'); });
.hide { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <a href="#" data-filter="a">a</a> <a href="#" data-filter="b">b</a> <a href="#" data-filter="c">c</a> <a href="#" data-filter="d">d</a> <div class="things"> <div class="a">a</div> <div class="b">b</div> <div class="c">c</div> <div class="d">d</div> <div class="a">a</div> <div class="b">b</div> <div class="c">c</div> <div class="d">d</div> <div class="a">a</div> <div class="b">b</div> <div class="c">c</div> <div class="d">d</div> <div class="a">a</div> <div class="b">b</div> <div class="c">c</div> <div class="d">d</div> </div>
這只是涉及最小javascript的另一種方式。
我最初用.content
類(第一個CSS規則)隱藏了所有div
元素。
然后我給出了display:block
到.content
元素,它是URL的當前目標。 例如,如果您的網址看起來像localhost/#content-1
那么:target
元素是#content-1
。
CSS的其余部分只是稍微改變顯示。 你可以忽略它。
根據我可以使用基本上每個現代瀏覽器保存為IE 8支持:target
psuedo選擇器。 現在
如果此頁面是自包含的並且您希望它是鏈接引用,我會使用此方法。 我的意思是,如果我轉到您的網頁,點擊側面的某個鏈接,並希望能夠將該內容鏈接到朋友,而無需告訴他們“在右側點擊'內容3'”
$routeProvider
可能會混淆(沒有測試它,所以我不能說100%)。 :target
元素。 顯然,所有其他Javascript解決方案都很棒,並且它們運行得非常好,我只是想向您展示一種實現相同功能的方法。
.content { display: none; } .content:target { display: block; } /* The magic bits are above.*/ .content-link, .content-link:visited { display: block; padding: 5px 10px; background: teal; color: #eee; } .content-link:hover { color: #fff; } .content-link + .content-link { margin-top: 10px; } .wrapper { display: flex; } .wrapper .sidebar { flex: 0 0 20%; }
<div class="wrapper"> <aside class="sidebar"> <a href="#content-1" class="content-link">Content 1</a> <a href="#content-2" class="content-link">Content 2</a> <a href="#content-3" class="content-link">Content 3</a> <a href="#content-4" class="content-link">Content 4</a> <a href="#content-5" class="content-link">Content 5</a> <a href="#content-6" class="content-link">Content 6</a> <a href="#content-7" class="content-link">Content 7</a> <a href="#content-8" class="content-link">Content 8</a> <a href="#content-9" class="content-link">Content 9</a> <a href="#content-10" class="content-link">Content 10</a> </aside> <main class="main-content"> <div class="content" id="content-1">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sint incidunt voluptate veritatis harum perspiciatis voluptas natus laborum officiis dicta accusantium placeat expedita, nemo obcaecati a, fugit sequi provident adipisci deserunt!</div> <div class="content" id="content-2">Nihil reiciendis, excepturi eos, qui autem eveniet rerum delectus nemo officiis cupiditate architecto quibusdam necessitatibus facere sint nisi quam repudiandae, labore eaque harum non unde sunt eius nostrum. Minima, dolor.</div> <div class="content" id="content-3">Eaque facilis neque veritatis eligendi illo aliquid deserunt ut vitae eius laudantium hic, fugit architecto quasi omnis dicta, molestias itaque? Ipsa ratione laborum eum optio non nam! Ducimus, ex, repudiandae!</div> <div class="content" id="content-4">Esse perspiciatis, maiores tenetur quaerat, maxime asperiores assumenda eum dolore ab minus similique mollitia blanditiis sequi quas laboriosam dolores debitis impedit dicta, fugit laudantium molestiae sunt quia! Placeat, repellendus consectetur?</div> <div class="content" id="content-5">Animi et, ut corporis perferendis placeat ipsa sit iusto voluptatibus id eligendi, pariatur beatae. Velit ex, beatae aut. Beatae ipsam culpa quae! Pariatur veniam, atque sit soluta nam, dolores rerum.</div> <div class="content" id="content-6">Aut ipsa, fugit voluptas, incidunt asperiores, id cupiditate error reprehenderit quibusdam ut ea eligendi eos temporibus! Nobis vel aperiam rem neque harum nostrum corrupti, obcaecati ad facere alias, distinctio fugiat.</div> <div class="content" id="content-7">Architecto quisquam placeat ratione voluptas iure, incidunt laudantium nisi ut aliquid aperiam! Quidem doloremque veritatis voluptas voluptates blanditiis ea quia nesciunt culpa commodi iusto, recusandae quae quo laudantium fuga saepe.</div> <div class="content" id="content-8">Quam iste, accusantium placeat quidem ratione atque sit impedit cum quo quos aspernatur modi assumenda voluptas, ea cumque autem facilis odit. Culpa maxime labore porro dicta voluptatem reiciendis tenetur perspiciatis!</div> <div class="content" id="content-9">Nisi sequi doloribus quos cum alias recusandae quasi eaque fugit sed deleniti magni maiores tenetur minus labore consectetur, quisquam excepturi maxime eveniet iure amet accusamus asperiores tempore. Vitae, sint. Blanditiis.</div> <div class="content" id="content-10">Alias officiis, earum possimus iure. Non, dolores unde magni itaque sed numquam aliquam, vel laudantium ullam? Vitae molestiae deleniti pariatur praesentium culpa ratione necessitatibus nemo, ea suscipit, maxime, ipsa delectus.</div> </main> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.