easyui menu用js添加菜单栏总是默认最后一个值的问题

目前有一个功能,需要用js去添加菜单栏。菜单栏有三层

最后一层的数据是点击了第二层,后显示出来啊的,

刚开始我用for循环。将得到的值循环出来,用easyui的方法添加进去,但是绑定的onclick事件,默认的总是最后一个值。

最后发现分两步写就可以了。

如下:

for(d in data_list){
    $("#"+node_id+"dim_mapping_field").menu('appendItem',{
            id: node_id+data_list[d][0]+'dim_mapping_ids',
            text : data_list[d][1],
            attributes:data_list[d][0]
        }
    );
    var s = $('#'+node_id+"dim_mapping_field").menu('getItem','#'+node_id+data_list[d][0]+"dim_mapping_ids")
    var path = "dim_mapping_field_action('"+node_id+"','"+s.attributes+"','"+s.text+"')"
    $("#"+s.id).attr("onclick",path);
}

将数据循环出来,在getItem后,attr一个onclick事件。

 

其实这种事情发生的原因是闭包的问题。

最简单的方法就是在定义d的时候,不用var定义,直接用let定义就可以了

for(let d in data_list){
            $("#"+node_id+"dim_mapping_field").menu('appendItem',{
                    id: node_id+data_list[d][0]+'dim_mapping_ids',
                    text : data_list[d][1],
                    attributes:data_list[d][0],
                    onclick: function (item){
                        dim_mapping_field_action(node_id,data_list[d][0],data_list[d][1])
                    },
                }
            );
//            var s = $('#'+node_id+"dim_mapping_field").menu('getItem','#'+node_id+data_list[d][0]+"dim_mapping_ids")
//            var path = "dim_mapping_field_action('"+node_id+"','"+s.attributes+"','"+s.text+"')"
//            $("#"+s.id).attr("onclick",path);
        }

转载于:https://my.oschina.net/u/2440810/blog/1648696

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值