Javascript函数,可以被很多元素使用,然后区分哪个元素点击了它

标签 javascript jquery html css drupal

例如,我有 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 语句

最佳答案

在事件处理程序中,您尝试将 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");
});

我希望这是有用的。

关于Javascript函数,可以被很多元素使用,然后区分哪个元素点击了它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31410643/

相关文章:

html - 如何让 div/span "fill in"成为页面的剩余宽度/高度,并保持固定位置?

javascript - 为什么我的 JavaScript 代码没有运行? Canvas 和 JavaScript 事件

javascript - 在 jsp 中调用 onclick 方法之前进行表单验证

javascript - 在函数内添加 javascript 全局变量

javascript - 图片幻灯片淡入淡出

javascript - 我的 ajax 根本不起作用?

javascript - jsTree:从应用程序目录加载 jquery.jstree.js 文件的行为与从 URL 加载它的行为不同

javascript - 将 autoUpdateInput 设置为 false 后日期时间选择器不工作

jquery - 使用输入类型按钮在 asp.net 中进行验证

javascript - 如何在 Jquery 中追加两个变量?