![](/img/trans.png)
[英]how to hide/show tag a after click on it that is outside of a div which become hidden and shown
[英]How to separate jQuery hide/show button from the hidden/shown div?
我想在標題中使用可點擊的div,以在我的主要內容區域下方顯示一個div,但是我不知道該怎么做。 現在,我正在使用像這樣的基本jQuery:
jQuery(document).ready(function() {
jQuery(".content").hide();
jQuery(".expand").click(function()
{
jQuery(this).next(".content").slideToggle(500);
});
});
和這樣的html:
<div class="expand">expand</div>
<div class="content">lorem ipsum</div>
但是如果我將兩個div分開,功能就會中斷。
如果您能引導我朝正確的方向前進,將不勝感激!
親切的問候
但是如果我將兩個div分開,功能就會中斷。
因為您使用的是next()
,它獲取$(this)
旁邊的下一個元素。 無論.content
在哪里,它都將起作用:
jQuery(document).ready(function () {
var $content = jQuery(".content"); // Cache
$content.hide();
jQuery(".expand").click(function () {
$content.slideToggle(500);
});
});
您可以使用nextAll().first()
代替next()
。
jQuery(document).ready(function() {
jQuery(".content").hide();
jQuery(".expand").click(function() {
jQuery(this).nextAll(".content").first().slideToggle(500);
});
});
這樣,如果頁面上有多個.content
, .expand
將僅擴展頁面上的下一個.content
。
您可以在這里做一些事情來提高性能和穩定性。 首先,您無需使用next()
方法,而只需使用
$('.expand').click(function () { $('.content').slideToggle(500); });
當然,這有一個明顯的缺點(?),當您單擊任何 .expand
時,會擴展和收縮所有 .content
區域。
但是,如果在.expand
和.content
添加幾個html屬性,則可以提高性能和穩定性,如下所示:
<div class="expand" data-for="content_id">Click to toggle</div>
<div class="content" id="content_id">This is the toggable content</div>
首先,這需要data-
屬性的jQuery最新版本(最好是1.6或更高版本)。 我使用data-for
,以表示一個特定的.expand
適用於一個特定的.content
。 這類似於在label
和form元素上使用for
屬性。
其次, .content
區域應用了一個新的(並且對每個人來說都是唯一的) id
。 這使jQuery選擇器可以通過getElementById()
函數更快地定位這些項目。
最后,新的javascript如下所示:
$('.expand').click(function () {
var id = '#' + $(this).data('for');
$(id).slideToggle(500);
});
並且,如果您需要手風琴功能(即,每當單擊一個內容時將所有.content
匯總,並激活與所單擊的data-for
相匹配的項目:
$('.expand').click(function () {
var id = '#' + $(this).data('for');
$('.content').slideUp(500);
$(id).slideDown(500);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.