对于默认情况下所有项目都隐藏的项目列表,第一个项目的名称li为displayof block。问题是,如果第一个元素被删除,这将不会更新,事实上创建了一个应该显示的新的第一个子元素。在 Safari 中,应该显示的新内容li不会显示。
超文本标记语言
<ul class="list">
<li class="item">1</li>
<li class="item">2</li>
<li class="item">3</li>
</ul>
<button>click me </button>
Run Code Online (Sandbox Code Playgroud)
CSS
.list .item { display: none }
.list .item:first-child { display:block}
Run Code Online (Sandbox Code Playgroud)
JS
$('button').on('click', function(e) {
$('ul li:first').remove().appendTo($('ul'));
});
Run Code Online (Sandbox Code Playgroud)
请参阅小提琴:http://jsfiddle.net/BFTan/1/
在所有其他浏览器中,单击该按钮将循环浏览项目,但在 Safari 中不会进行任何更新。
假设样式表中有一些选择器没有样式信息,因此它们实际上是空的(没有样式声明):
.main-menu {}
Run Code Online (Sandbox Code Playgroud)
浏览器还会搜索它们吗?
我的直觉是,这将取决于浏览器,因此“聪明”的程序员会说“如果选择器为空,请不要打扰”,但并非所有浏览器都会有这种开明的实现。快速搜索了一下,没有找到任何内容,想知道这里是否有人知道这方面的事情......
我确信最佳实践是不要使用带有空声明的选择器,因为它们浪费空间和时间,W3 对此有何说明吗?
谢谢!