bootstrap只能打开折叠,你点击
问题描述:
大家好我试图使用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);
}
答
如果你仔细观察,你可以在扰流板的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)来代替,然后增加计数。这是(我会假设)更好的表现。
答
的问题是与DIV ID =“手风琴”
所以它不能出现多次的ID必须是文档中唯一的ID。如果是这样,它通常会发现它找到的第一个。
您将需要一个类,而不是
我已经更新了我与我如何做它的代码应用手风琴事件,是否可以编辑您的答案告诉我怎么样? – NaughtySquid 2014-10-02 14:03:06
查看我的最新编辑。这是你解决问题的方法之一 – 2014-10-02 14:12:15
这似乎给我所有的“0”? – NaughtySquid 2014-10-02 14:14:10