2014-10-02 106 views
0

大家好我試圖使用botstraps「崩潰」元素的擾流bbcode標籤,它看起來不錯,但我確實有一個問題。bootstrap只能打開摺疊,你點擊

如果您在頁面上有多個摺疊並單擊其中任何一個,它總是打開/關閉第一個。

有沒有辦法讓它只打開/關閉你點擊的那個?

現在它只是替換此:

"/\[spoiler\](.+?)\[\/spoiler\]/is" 

有了這個:

'<div class="panel-group" id="accordion"><div class="panel panel-default"><div class="panel-heading"><h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Spoiler, click to open</a></h4></div><div id="collapseOne" class="panel-collapse collapse"><div class="panel-body">$1</div></div></div>' 

有隻是一個簡單的方法,使其只能打開一個你點擊?

這是我的代碼現在:

// Spoiler 
$pattern = '/\[spoiler\](.+?)\[\/spoiler\]/is'; 

$replace = '<div class="panel-group" id="accordion"><div class="panel panel-default"><div class="panel-heading"><h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Spoiler, click to open</a></h4></div><div id="collapseOne" class="panel-collapse collapse in"><div class="panel-body">$1</div></div></div>'; 

while(preg_match($pattern, $body)) 
{ 
    $body = preg_replace($pattern, $replace, $body); 
} 

回答

4

如果你仔細觀察,你可以在擾流板的div看到在打開的鏈接href "#collapseOne"id="collapseOne"。如果用每個擾流標籤的相同替換字符串替換它,則每個標籤都具有相同的href和Id。由於默認瀏覽器行爲,它很可能會打開第一個。

您應該保留一個變量,用於增加擾流板已解析的次數,並將其插入鏈接的href和擾流板div的ID中。

如果我們看一下您所提供的代碼,你可以做這樣的:

// Spoiler 
$pattern = '/\[spoiler\](.+?)\[\/spoiler\]/is'; 
$spoilCount = 0; 
while(preg_match($pattern, $body)) 
{ 
    $replace = '<div class="panel-group" id="accordion"><div class="panel panel-default"><div class="panel-heading"><h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapse'. $spoilCount . '">Spoiler, click to open</a></h4></div><div id="collapse' . $spoilCount . '" class="panel-collapse collapse in"><div class="panel-body">$1</div></div></div>'; 
    $body = preg_replace($pattern, $replace, $body, 1); 
    $spoilCount++; 
} 

但是,由於它是更好地使用一個回調函數(preg_replace_callback)來代替,然後增加計數。這是(我會假設)更好的表現。

+0

我已經更新了我與我如何做它的代碼應用手風琴事件,是否可以編輯您的答案告訴我怎麼樣? – NaughtySquid 2014-10-02 14:03:06

+0

查看我的最新編輯。這是你解決問題的方法之一 – 2014-10-02 14:12:15

+0

這似乎給我所有的「0」? – NaughtySquid 2014-10-02 14:14:10

1

的問題是與DIV ID =「手風琴」

所以它不能出現多次的ID必須是文檔中唯一的ID。如果是這樣,它通常會發現它找到的第一個。

您將需要一個類,而不是