我正在开发一个项目,但我写的代码确实是错误的:
$('#lart').click(function(){
$("#form3").addClass("lart");
});
$('#posht').click(function(){
$("#form3").addClass("posht");
});
$('#majt').click(function(){
$("#form3").addClass("majt");
});
$('#djatht').click(function(){
$("#form3").addClass("djatht");
});
我想用switch语句制作它,但我不知道如何为这些情况制作变量。上面的代码无法正常工作,因为当我单击更多选项时,它会添加更多类,我不希望它添加更多类,只需其中一个(lart,posht,djatht,majt)。
如果我希望它有两对,比如只是用posht和majt用djath改变lart,顺便说一下这就是ids的含义:lart = up posht = down majt = left djatht = right so if我单击向上按钮,然后我点击右边的类,保持它只是要添加1个名为right或left的类!或者,如果我单击向下按钮,那么我可以更改右侧或左侧但是(向下和向左/向右或向上和向左/向右)是否可以这样做?
答案 0 :(得分:4)
不需要switch语句。只需选择所有元素,绑定事件处理程序,并将ID用作类:
$('#lart, #posht, #majt, #djatht').click(function(){
$("#form3").prop('class', this.id);
});
如果你想确定你没有删除任何其他类,请使用:
$('#lart, #posht, #majt, #djatht').click(function(){
$("#form3").removeClass('lart posht majt djatht').addClass(this.id);
});
更新解决了评论中发布的问题(为了便于理解,我将使用英文单词进行说明):
var opposites = {
up: 'down',
down: 'up',
right: 'left',
left: 'right'
};
$('#up, #right, #down, #left').click(function() {
$("#form3").addClass(this.id).removeClass( opposites[this.id] );
});
答案 1 :(得分:2)
更新:一次只附加一个课程。
$("#lart,#posht,#majt,#djatht").click(function() {
$("#form3").attr('class',this.id);
});
答案 2 :(得分:1)
不确定您为什么逃过引号,但如果您一次只想要一个班级,请使用...
.prop('class', this.id);
...而不是addClass
。
答案 3 :(得分:1)
我在这里使用data-
属性而不是类名。
$.each(['lart', 'posht', 'djatht', 'majt'], function (idx, id) {
$('#' + id).click(function () {
$('#form3').attr('data-selected', id)
})
})
这样,每次单击其中一个触发器时,都会覆盖以前的值。如有必要,您可以使用CSS选择器中的data-
属性:
#form3[data-selected="lart"] {
...
}