我在聊天框中有一个段落列表:
<div id=chatbox>
<p><i>15:21</i><b data-c=john>john</b>: hello jack</p>
<p><i>15:22</i>i want to tell you something</p>
<p><i>17:17</i><b data-c=jack>jack</b>: hi john.</p>
<p class=hidden><i>20:15</i>Ο <span data-c=server>server</span> alex joined the chat</p>
<p><i>17:17</i><b data-c=alex>alex</b>: hi all of you.</p>
</div>
我希望有一个切换按钮以显示/隐藏隐藏的元素。有没有办法将hidden
类的样式从display:none
切换到display:inline
并向后切换?
请注意,如果我将所有现有的class = hidden更改为可见,当AJAX带来一条新的隐藏线时,它仍然会与之前的元素相比隐藏。有没有办法改变课堂风格的内容?
答案 0 :(得分:2)
使用javascript迭代所有元素以更改显示,这是一个非常糟糕的主意,只需在父元素上切换类就可以轻松完成。
单击该按钮时,您只需在showHidden
元素上切换#chatbox
类,然后使用CSS隐藏或显示其中的所有隐藏项目。
CSS:
.hidden {
display: none;
}
#chatbox.showHidden .hidden {
display: inline;
}
jQuery的:
$(document).ready( function() {
$('.toggleButton').on('click', function(){
$('#chatbox').toggleClass('showHidden');
});
});
答案 1 :(得分:1)
添加按钮
<div id=chatbox>
<p><i>15:21</i><b data-c=john>john</b>: hello jack</p>
<p><i>15:22</i>i want to tell you something</p>
<p><i>17:17</i><b data-c=jack>jack</b>: hi john.</p>
<p class=hidden><i>20:15</i>Ο <span data-c=server>server</span> alex joined the chat</p>
<p><i>17:17</i><b data-c=alex>alex</b>: hi all of you.</p>
</div>
<button id="show_hidden">Show Hidden</button>
更改该类的样式以及该类的任何未来元素
var button = document.getElementById('show_hidden'),
hidden = true;
button.addEventListener('click', function() {
var st = document.getElementById('myStyle');
if (st) {
st.innerHTML = '.hidden { display: '+ (hidden?'block':'none') +'; }';
}else{
var css = '.hidden { display: block; }',
head = document.head || document.getElementsByTagName('head')[0],
style = document.createElement('style');
style.type = 'text/css';
style.id = 'myStyle';
if (style.styleSheet){
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
head.appendChild(style);
}
button.innerHTML = (hidden ? 'Hide' : 'Show');
hidden = !hidden;
}, false);
答案 2 :(得分:-1)