SugarCRM(Backbone.js):自定义事件中无法获取user_id属性求解决
解决Backbone.js SugarCRM中获取自定义user_id属性的问题
直接获取的正确方法
你之前的代码把DOM元素转成JSON再解析完全是多余的操作,e.currentTarget本身就是被点击的<li> DOM元素,直接调用原生方法或jQuery方法就能拿到属性值:
方法1:原生JavaScript
getselectedUser: function(e) { // 直接从当前点击的li元素获取user_id属性 const userId = e.currentTarget.getAttribute('user_id'); console.log(userId); }
方法2:Backbone/jQuery方式
利用Backbone集成的jQuery,将DOM元素转为jQuery对象后获取属性:
getselectedUser: function(e) { const userId = this.$(e.currentTarget).attr('user_id'); console.log(userId); }
更规范的写法(推荐)
按照HTML5规范,自定义属性建议使用data-*前缀,兼容性更好也更符合标准:
- 修改动态生成li的代码:
_.each(data.users, function (user) { list += '<li data-user-id="' + user.id + '"> ... </li>'; }); this.$('.usersLegend ul').html(list);
- 对应的获取方式:
原生JS
getselectedUser: function(e) { const userId = e.currentTarget.dataset.userId; console.log(userId); }
jQuery方式
getselectedUser: function(e) { const userId = this.$(e.currentTarget).data('user-id'); console.log(userId); }
为什么原来的代码失效?
你之前将e.currentTarget转为JSON字符串后再解析,这个过程会丢失DOM元素的属性信息,而且完全没必要——e.currentTarget本身就是现成的DOM对象,直接操作即可。
内容的提问来源于stack exchange,提问作者neeraj
相关产品推荐
相关产品推荐

