更改多个对象的类的更简单方法
Easier way to change classes on multiple objects
我正在编写一个包含大量"选项卡"的页面,每个选项卡都有一段文本,当您单击选项卡时,该文本应该可见。
到目前为止没有问题,我通过使用"clickfunction"和"add/removeClass"来实现这一点。但是现在的事情是,有很多选项卡被添加到页面中,我的JS文件确实被略有不同的引用弄乱了。有没有更简单、更有效的方法可以做到这一点?我的代码如下所示:
该选项卡:
<li id="a2b" class="blok roze">
<i class="fa fa-bus"><span>A2B Transfers</span></i>
</li>
选项卡的内容:
<div class="a2b sysBox nonVisible">
<h3>A2B Transfers</h3>
<p>Informatie volgt binnenkort</p>
<div class="line"></div>
<div class="btnBox">
<a href="http://www.a2btransfers.com/" target="_blank">
<div class="btnSystem">Ga naar A2B Travel</div>
</a>
</div>
</div>
和JS片段之一:
$('#vakantieveilingen').click(function() {
$('.vakantieveilingen').removeClass('nonVisible').addClass('visible');
$('.a2b').removeClass('visible').addClass('nonVisible');
$('.bedsonline').removeClass('visible').addClass('nonVisible');
$('.holidaytaxis').removeClass('visible').addClass('nonVisible');
$('.hotelbeds').removeClass('visible').addClass('nonVisible');
$('.actievandedag').removeClass('visible').addClass('nonVisible');
$('.alturabeds').removeClass('visible').addClass('nonVisible');
$('.eazzypark').removeClass('visible').addClass('nonVisible');
$('.europeesche').removeClass('visible').addClass('nonVisible');
$('.exclusivehotels').removeClass('visible').addClass('nonVisible');
$('.expedia').removeClass('visible').addClass('nonVisible');
$('.floow').removeClass('visible').addClass('nonVisible');
$('.groupon').removeClass('visible').addClass('nonVisible');
$('.lmx').removeClass('visible').addClass('nonVisible');
$('.med').removeClass('visible').addClass('nonVisible');
$('.miki').removeClass('visible').addClass('nonVisible');
$('.parkfly').removeClass('visible').addClass('nonVisible');
$('.taxibreburg').removeClass('visible').addClass('nonVisible');
$('.thomascook').removeClass('visible').addClass('nonVisible');
$('.transavia').removeClass('visible').addClass('nonVisible');
$('.jumbo').removeClass('visible').addClass('nonVisible');
});
我希望有人知道如何处理好这个问题。
您应该能够使用通用类和属性将所有选项卡的一键式处理程序缩减为一键式处理程序
我不确定选择器中的 ID $('#vakantieveilingen')
在您的 HTML 中引用什么,但您的最终结果应该相当简单,例如:
$('.blok').click(function(){
var targetClass= '.' + this.id;
// hide all content blocks
$('.sysBox').removeClass('visible').addClass('nonVisible');
// show content related to this tab
$(targetClass).removeClass('nonVisible').addClass('visible')
});
您可以将 jQuery 选择器分组为:
$('.thomascook, .transavia, .jumbo').removeClass('visible').addClass('nonVisible'); });
以缩短 JS 代码。
相关文章:
- 在javascript regexp中捕获多个变量的一种更简单的方法
- 调用影子原型方法的更简单/更好的方法
- 有没有更简单的方法在 Wordpress 中为多个页面模板排队脚本
- 有没有更简单的方法在JavaScript中为Object.defineProperty编写
- 从所有单词中替换,即使用破折号分隔,第一个字符用大写[更简单的方法]
- 有没有更简单的方法来编写此代码
- 用于捕获滚动事件的跨浏览器方法(或暂时禁用滚动的更简单方法)
- 有没有更简单的方法来检查某个父元素的 N 个子元素是什么
- jQuery 更简单的方法来执行真正的向上/向下滑动
- 查找嵌套 xml 节点的更简单方法
- free-jqgrid:保存、加载和应用过滤器数据的更简单方法,包括过滤器工具栏文本和页面设置
- 有没有更简单的方法可以在 jquery 中验证我的表单而不是我所拥有的?
- 更改多个对象的类的更简单方法
- 有没有更简单的方法可以在一个 UL 中获取 LI 列表编号
- 在循环中使用 .getValue().这会导致许多调用.有没有更简单的方法可以做到这一点
- 有没有更简单的方法可以为不同的选择器链接不同的 jQuery 操作,然后嵌套 $.when
- 用JavaScript创建DOM树的一种更简单的方法
- 有没有一种更简单的方法可以输出完整的'脚本'标记为文本
- 有没有一种更简单的方法可以用javascript运行sqlite
- 更简单的方法来完成以下操作