重构选项卡
HTML:
<ul>
<li><a href="#tab1">tab1</a></li>
<li><a href="#tab2">tab2</a></li>
</ul>
<div id="tab1" class="tab-content">content 1</div>
<div id="tab2" class="tab-content">content 2</div>
jQuery
$('#mode li:first').addClass('active');
$('#mode li.active').append('<span class="arrow"> </span>');
$('#mode li a').click(function () {
$('#mode li').removeClass('active')
$('.arrow').remove();
$(this).parent().addClass('active').append('<span class="arrow"> </span>');
var a = $(this).attr('href');
$('.tab-content').hide();
$(a).show();
return false;
});
..可以工作,但看起来很丑。可以进一步简化/减少吗?
非常感谢!
HTML:
<ul>
<li><a href="#tab1">tab1</a></li>
<li><a href="#tab2">tab2</a></li>
</ul>
<div id="tab1" class="tab-content">content 1</div>
<div id="tab2" class="tab-content">content 2</div>
jQuery
$('#mode li:first').addClass('active');
$('#mode li.active').append('<span class="arrow"> </span>');
$('#mode li a').click(function () {
$('#mode li').removeClass('active')
$('.arrow').remove();
$(this).parent().addClass('active').append('<span class="arrow"> </span>');
var a = $(this).attr('href');
$('.tab-content').hide();
$(a).show();
return false;
});
.. works, but looking ugly. Can it be simplified/reduced further?
Many thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
重构不多,但我对逻辑进行了一些编辑(假设
#mode
与ul
相关),请参阅 http://jsfiddle.net/wwMJL/ 进行现场演示
Not much of refactoring, but I edited the logic somewhat (assume
#mode
is realtive theul
)see http://jsfiddle.net/wwMJL/ for live demo
你知道,有些事情总是可以优化的。
将 $('#mode li') 放入变量中,因为 $() 函数需要时间,
也可以将跨度的 HTML 字符串放入变量中,更好地进行重构。
如果您确实需要带有箭头类的跨度, 每里放跨度。
通过css来显示:none;如果它的父类处于活动状态,则会查看它。
少了两行;-)
CSS: (这有效吗?我认为它有效......??)
you know, some things can be optimized allways.
put $('#mode li') into a variable, because the $() function needs time,
also the HTML-String for the span can be put into a variable, better for refactoring,
if you really need the span with the arrow class. put the span in every li.
put it via css to display: none; and if it's parent class is active it is viewd.
two lines less ;-)
CSS: (does this work? i think it does ... ??)