例如我有12个div标签,每个标签代表一个月。单击时,每个人将显示其月份的另一个div并隐藏所有其他月份div
12个月的div有共同的month
类。每个包含该月内容的部分都有month_section
个共同点,并且它们所代表的月份名称不常见。
到目前为止我的javascript代码:
$("#January,#February,#March,#April").click(function(e)){
$(".month").removeClass("highlight");
$(".month_sections").removeClass("show");
$(".month_sections").addClass("hide");
if(this == "#January"){(this).addClass("highlight");$(".january").addClass("show");}
else if(this == "#February"){(this).addClass("highlight");$(".february").addClass("show");}
else if(this == "#March"){(this).addClass("highlight");$(".march").addClass("show");}
else if(this == "#April"){(this).addClass("highlight");$(".april").addClass("show");}
});
未正确检测到if语句
答案 0 :(得分:1)
使用e.target
,因为它引用了点击的元素。
请注意,这与使用$(this)
不同。在这个问题的答案中阅读更多相关内容:Difference between $(this) and event.target?
答案 1 :(得分:1)
在事件处理程序中,您尝试将this
对象与字符串进行比较。
jQuery回调上下文中的this
是被单击的元素。如果您想比较点击的用户,则必须使用this.id
,其中第一个月的上下文将等于January
。所以你可以比较。
if(this.id == "January") {
$(this).addClass("highlight");
$(".january").addClass("show");
}
您可以采取一些其他方法来保存某些代码。
$("#January,#February,#March,#April").click(function(e) {
var monthStr = this.id;
$(".month").removeClass("highlight");
$(".month_sections").removeClass("show");
$(".month_sections").addClass("hide");
$(this).addClass("highlight");
$("." + monthStr.toLowerCase()).addClass("show");
});
我希望这很有用。
答案 2 :(得分:0)
使用以下作为if语句:
if ($(this).attr('id') === 'January')
如果您每个月都需要特别的东西,也可以使用switch语句:
switch ($(this).attr('id'))
{
case 'January':
case 'February':
...
}
祝你好运!
答案 3 :(得分:0)
您的代码中有几处错误
您将'this'与元素的id进行比较,这是javascript对象而不是元素的id
addClass是一个jQuery方法,你必须将它称为'$(this)'
试试这个
$("#January,#February,#March,#April").click(function(e)) {
$(".month").removeClass("highlight");
$(".month_sections").removeClass("show");
$(".month_sections").addClass("hide");
if (this.id == "January") {
$(this).addClass("highlight");
$(".january").addClass("show");
}
else if (this.id == "February") {
$(this).addClass("highlight");
$(".february").addClass("show");
}
else if (this.id == "March") {
$(this).addClass("highlight");
$(".march").addClass("show");
}
else if (this.id == "April") {
$(this).addClass("highlight");
$(".april").addClass("show");
}
});
注意:如果您使用e.target.id或$(this).attr('id')而不是this.id,则其中任何一个都可以使用