2016-07-25 56 views
0

我使用的是由Luca Filosofi編寫的基本jQuery手風琴,來自this thread。這是我的版本:如何使用jquery將加減號添加到基本手風琴?

$('.product-details .post-body dl dt').on('click', function (e) { 
    e.preventDefault(); 
    $(this).parent('dl').children('dd:visible').slideUp('fast'); 
    $(this).nextUntil('dt').filter(':not(:visible)').slideDown('fast'); 
}); 

該腳本完美地工作。但是,我不知道如果在標題(例如:+標題)之前加上加號和減號文字(+,-),如果顯示或不顯示內容。

我有以下永久標記,它必須保持原樣。不能添加更多的類或HTML,除了通過jQuery:

<dl> 
    <dt>Title</dt> 
    <dd>Description 01</dd> 
    <dd>Description 02</dd> 

    <dt>Title</dt> 
    <dd>Description 01</dd> 
    <dd>Description 02</dd> 
    <dd>Description 03</dd> 
</dl> 
+0

是什麼*內容含義顯示或不顯示。*? – Mohammad

+0

我使用多個描述來定義一個單詞,將

視爲觸發按鈕,將所有
視爲與內容相同的組。點擊單個
將展開其所有內容並自動摺疊其他羣組內容。就像垂直標籤 – Biyan

回答

1

你可以切換圖標,當用戶點擊這樣的:

$('.product-details .post-body dl dt').on('click', function (e) { 
    e.preventDefault(); 
    $(this).parent('dl').children('dd:visible').slideUp('fast'); 
    $(this).nextUntil('dt').filter(':not(:visible)').slideDown('fast'); 
    $(this).closest('i').toggleClass("icon-circle-plus icon-circle-minus"); 
}); 
+0

我做了一個小小的修改,把'我'改爲'dt'。 - 但它觸發了一個活躍的類作爲切換,而不是手風琴。它只會在單擊相同的「dt」時刪除活動類。 – Biyan

+0

他們發現元素有加號,把它變成減號,並將當前點擊的元素改爲加號。 ('click',function(e){e.preventDefault(); $(this).parent''dl')。children() '':'fast'); $(this).nextUntil('dt')。filter(':not(:visible)')。slideDown('fast'); $('。 ('。icon-circle-plus')。attr('class','icon-circle-minus'); $(this).closest('dt')。 attr('class','icon-circle-plus');});' 希望它有幫助 – CardCaptor

1

您需要獲得使用.slice()dt文本的最後一個字符。如果最後一個字符是+更改爲-,如果它是-更改爲+

$('dl dd').slideUp('fast'); 
 
$('dl dt').on('click', function() { 
 
    $(this).parent().children('dd:visible').slideUp('fast'); 
 
    $(this).nextUntil('dt').not(':visible').slideDown('fast'); 
 
    $(this).text(function(i, text){ 
 
     return (text.slice(-1) == "-") ? (text.slice(0, -1) + " +") : (text.slice(0, -1) + " -"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<dl> 
 
    <dt>Title +</dt> 
 
    <dd>Description 01</dd> 
 
    <dd>Description 02</dd> 
 
    <dt>Title +</dt> 
 
    <dd>Description 01</dd> 
 
    <dd>Description 02</dd> 
 
    <dd>Description 03</dd> 
 
</dl>

+0

感謝您的答案。不幸的是,我們有數百篇使用給定標記發佈的文章,而且還會有更多文章,所以爲每篇文章定製html確實需要大量工作,而不是爲將來發布提供一個好的步驟。除了通過jQuery之外,我們更好地使用默認HTML,而不添加額外的符號或html行。 – Biyan

+0

@Biyan沒有問題。你可以像使用jQuery那樣做[** demo **](https://jsfiddle.net/66y6udrb/) – Mohammad

+0

如何在Title之前移動「+/-」? – Biyan

相關問題