这两个代码块基本上只是用不同的元素相同如何将它们合并到单个可重用脚本中
indicies = [[i for i,x in enumerate(list1) if x == k] for k in replacements.keys()]
# indicies is equal to [[0, 4], [2, 3]]
答案 0 :(得分:0)
使用逗号:
$('.menu-button, .cart-button').on('click', function(e) {
var param = $(this).is('.menu-button') ? "sidebar" : "cart";
e.preventDefault();
e.stopPropagation();
$('.cart-open').removeClass('cart-open');
$('.sidebar-open').removeClass('sidebar-open');
$('#' + param).toggleClass(param + '-open');
$(document).one('click', function closeMenu (e){
//console.log("DF");
if($("#" + param).has(e.target).length === 0){
console.log("DF");
$("#" + param).removeClass(param + '-open');
} else {
$(document).one('click', closeMenu);
}
});
});
编辑:另外,使用简写if语句来查看其侧边栏或购物车是否被点击,在其余部分使用。
答案 1 :(得分:0)
尝试为processMenu
事件定义单个处理程序click
;使用elem
event.target.className
var processMenu = function processMenu(e) {
var elem = $(e.target.className === "menu-button" ? "#sidebar" : "#cart");
e.preventDefault();
e.stopPropagation();
$("#sidebar").toggleClass("sidebar-open");
$("#cart").removeClass("cart-open");
$(document).one("click", function closeMenu (evt){
//console.log("DF");
if(elem.has(evt.target).length === 0){
console.log("DF");
elem.removeClass("sidebar-open");
} else {
$(document).one("click", closeMenu);
}
});
};
$(".menu-button, .cart-button").on("click", processMenu);