有没有更简单的方法来重复多行代码JQUERY

时间:2018-01-11 14:33:41

标签: jquery function variables mobile menu

我有多个使用不同元素执行相同任务的函数。这是一个移动菜单。所以我有一个功能,当单击菜单按钮时...打开移动菜单,将汉堡变换为“X”并使页面叠加可见。我还有一个功能,当菜单打开并且用户更改设备的方向时关闭菜单。我还有一个功能,当用户点击/点击移动菜单之外的任何地方时,它将关闭菜单(以及点击“X”)。

在这些函数中,我使用“removeClass或toggleClass”重复了很多。是否有更简单的方法来表示所有这些代码行,以便它们在其他地方声明,然后在所有这些函数中调用?变量可能吗?因为我不喜欢重复自己。

这是重复/示例代码。

$("#mobile-menu").removeClass("enabled1");
$("#menu-button").removeClass("open");
$("#mobile-menu-wrapper").removeClass("enabled1");
$("#page-overlay").removeClass("enabled1");

2 个答案:

答案 0 :(得分:1)

您希望将菜单的“打开”和“关闭”抽象为函数...

$('button').on('click',function(){
  openMenu();
});

$('button2').on('click',function(){
  closeMenu();
});

...然后从您需要的任何地方调用该函数。

library(magrittr)

# Define the columns to be used 
col.visits = colnames(df)[4:ncol(df)] # Visits are represented from column 4 on
col.baseline = "firstpc10"
col.final = "lastpc10"

答案 1 :(得分:0)

您可以拥有一个包含要删除该类的所有元素的数组,并将其传递给一个函数,其中每个元素都会删除该类。

function allRemoveClass(selectors, cl) {
  selectors.forEach((s) => $(s).removeClass(cl));
}

let enabled = ["#mobile-menu", "#mobile-menu-wrapper", "#page-overlay"];
allRemoveClass(enabled, "enabled1");

let opened = ["#menu-button"];
allRemoveClass(opened, "open");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>