JavaScript数组拼接不适用于JQuery click事件

时间:2019-05-23 23:41:04

标签: javascript jquery arrays

在循环中,array.splice不起作用 数组不变

我改变了一些位置,确认它不适用于Chrome。

var menu =['#men','#wmen','#ftwear','#accsries','#chldren','#dscver']

for( var i = 0; i < menu.length; i++){ 
 $(menu[i]).click(function(){
   menu.splice(i, 1);
   console.log(menu) 
   menu.forEach(function(list){
     $(list+' ul').slideUp(300)
     $(list).removeClass('bold') 
   })
   menu.splice(i, 0, menu[i]);
  console.log(menu) 
 })
 }

我希望for循环可以与array.splice一起使用

1 个答案:

答案 0 :(得分:0)

您需要将i的值绑定到click内部的函数-因为它是异步调用的。尝试在let语句中使用var代替for

var menu =['#men','#wmen','#ftwear','#accsries','#chldren','#dscver']

for( let i = 0; i < menu.length; i++){ 
 $(menu[i]).click(function(){
   menu.splice(i, 1);
   console.log(menu) 
   menu.forEach(function(list){
     $(list+' ul').slideUp(300)
     $(list).removeClass('bold') 
   })
   menu.splice(i, 0, menu[i]);
  console.log(menu) 
 })
 }