如何避免重复代码(加载页面时切换)
How to avoid duplicate code (toggle when page loaded)?
请参阅下面的代码,如果您单击副标题行,它将隐藏带有它的行。效果很好。
在第二个副标题行 ( <tr class="sub-title default-hide">
) - 我希望它在页面加载时默认切换/隐藏。.如何在不编写如下重复代码的情况下执行此操作?
$(".sub-title").on("click",function() {
tr = $(this).find('span').hasClass("arrow2");
trSpan = $(this).find('span');
$(this).nextUntil(".sub-title").each(function() {
if (!$(this).hasClass('head-order')) {
$(this).toggle();
if (tr) {
trSpan.removeClass('arrow2').addClass('arrow1');
} else {
trSpan.removeClass('arrow1').addClass('arrow2');
}
}
});
});
.HTML
<table border="1">
<tbody>
<tr class="head">
<td> title </td>
</tr>
<tr class="sub-title">
<td>Sub Title 1 <span class="arrow2"> </span></td>
</tr>
<tr> <td>Item 1</td> </tr>
<tr> <td>Item 2</td> </tr>
<tr> <td>Item 3</td> </tr>
<tr class="sub-title default-hide">
<td>Sub Title 2 <span class="arrow2"></span></td>
</tr>
<tr> <td>Item 4</td> </tr>
<tr> <td>Item 5</td> </tr>
<tr> <td>Item 6</td> </tr>
</tbody>
</table>
我用你提供的信息创建了一个jsFiddle示例。
我稍微编辑了一下代码,使用默认的 arrow
-class 并仅向其添加类close
,以定义新样式,这应该会使代码更短一些。
$(".sub-title").on("click",function() {
var trSpan = $(this).find('span');
trSpan.toggleClass('closed');
$(this).nextUntil(".sub-title").each(function() {
if (!$(this).hasClass('head-order')) {
$(this).toggle();
}
});
});
为了使"默认隐藏"-元素在页面加载时关闭,我所做的只是在绑定点击处理程序后触发点击事件。
$('.default-hide').trigger('click');
请参阅小提琴以获取工作示例
创建一个命名函数并调用它几次:
var toggleArrow = function(el) {
tr = $(el).find('span').hasClass("arrow2");
trSpan = $(el).find('span');
$(el).nextUntil(".sub-title").each(function() {
if (!$(el).hasClass('head-order')) {
$(el).toggle();
if (tr) {
trSpan.removeClass('arrow2').addClass('arrow1');
} else {
trSpan.removeClass('arrow1').addClass('arrow2');
}
}
});
};
$(".sub-title").on("click", function(){ toggleArrow(this); });
$(".default-hide").each(function(i, el){ toggleArrow(this); });
您可以手动触发default-hide
行的单击事件。
喜欢这个
$('.default-hide').trigger('click');
相关文章:
- 为什么页面重新加载会使设置超时无效,以及如何避免
- 避免在用ng href加载样式表之前显示内容
- 避免将lib依赖项与webpack+handlebas加载程序捆绑在一起
- 如何避免webGL着色器加载给cpu带来太多负载
- 如何避免重复代码(加载页面时切换)
- 我应该如何在JS中使用揭示模块模式,传递引用,并避免加载顺序问题
- 避免在手机中加载图像
- 避免在打印后加载新页面,下一页应从上次打印页面的剩余部分打印 - 点阵打印机
- 延迟 window.print() 直到页面在 ajax 请求中加载以避免空白打印屏幕
- 有没有办法避免角加载动态构建页面时的抖动效应
- 避免重定向后重新加载页面
- 正则表达式将 html-image 转换为 XML 以避免预加载
- 将 JSON 作为 HTML 中的资源加载以避免引导 ajax
- 避免使用jQuery显示的数据.html在页面重新加载后丢失
- 如何正确注销GWT应用程序以避免浏览器加载缓存数据
- Requirejs jQuery正在覆盖WordPress加载的jQuery,我怎样才能避免这种情况(通过调用noCon
- 如何避免 Jquery 函数加载缓慢
- 避免 jQuery(预)加载图像
- 在加载前避免对话框.有可能吗
- 散列CSS和JS文件长时间以相同的值加载,避免缓存是有意义的