我正在创建一个网站,这段代码让我在1 .html文件中有几个页面。可以避免此代码的迭代性吗?可以简化吗?
<script type="text/javascript">
var x = 300;
$(function() {
$("#indexLink").click(function() {
$("#content>div").not("#start").hide(x);
$("#index").show(x);
$('nav>ul>li').removeClass('active');
$('#indexLink').addClass('active');
});
$("#leerlingLink").click(function() {
$("#content>div").not("#start").hide(x);
$("#leerling").show(x);
$('nav>ul>li').removeClass('active');
$('#leerlingLink').addClass('active');
});
$("#bestemmingLink").click(function() {
$("#content>div").not("#start").hide(x);
$("#bestemming").show(x);
$('nav>ul>li').removeClass('active');
$('#bestemmingLink').addClass('active');
});
$("#betalingLink").click(function() {
$("#content>div").not("#start").hide(x);
$("#betaling").show(x);
$('nav>ul>li').removeClass('active');
$('#betalingLink').addClass('active');
});
});
</script>
答案 0 :(得分:1)
假设被点击的东西不是锚链接,你可以给元素提供所有相同的类并写一次 -
编辑:根据这些是锚链接的信息进行了更改。
$('.classname').click(function(event) {
event.preventDefault();
$("#content>div").not("#start").hide(x);
var idString = this.id
var shortIDString = idString.slice(0,-4); //remove the 'Link'
$("#" + shortIDString).show(x);
$('nav>ul>li').removeClass('active');
$(this).addClass('active');
});
答案 1 :(得分:0)
您可以使用for循环并构造选择器:
$(function () {
var items = ["index", "leerling", "bestemming", "betaling"];
for (var i = 0; i < items.length; i++) {
var item = items[i];
$("#" + item + "Link").click(function () {
$("#content>div").not("#start").hide(x);
$("#" + item).show(x);
$('nav>ul>li').removeClass('active');
$('#' + item + 'Link').addClass('active');
});
}
});
您还可以向所有#whateverLinks
添加处理程序,然后根据事件目标的id值检测链接名称。
答案 2 :(得分:0)
iterative-ness
是什么意思?
如果你想让你的代码干,你可以写下这样的东西:
<script type="text/javascript">
var x = 300;
$(function () {
$("#indexLink,#betalingLink,#bestemmingLink,#leerlingLink").click(function () {
$("#content>div").not("#start").hide(x);
$("#"+$(this).attr("id").slice(0,-4)).show(x);
$('nav>ul>li').removeClass('active');
$('#indexLink').addClass('active');
});
});
</script>
这将占用所有选择器,当时一个,并使所有选择器运行您的代码,基本上与您键入的相同,但仅在一个选择器中
修改强>
固定div显示
<强> EDIT2 强>
添加jsfiddle以显示它正常工作:http://jsfiddle.net/NicosKaralis/Vurjf/