小编Den*_*nis的帖子

jQuery数据$(...).data('foo')有时在Backbone app中返回undefined

遇到一个奇怪的错误 - 所以我button在我的HTML中的elems 上定义了一个属性'data-tagtype' .当用户单击按钮时,将调用以下方法:

onClickTag: function(e) {
  if (!this.playerLoaded) {
    return false;
  }
  var type = $(e.target).data('tagtype');
  var seconds = this.getCurrentTime();
  console.log(type);
  if (type) {
    this.model.addTag({
      type: type,
      seconds: seconds
    });
  }
},
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都有效,但由于某种原因,有时type(看似)随机元素未定义.相应的HTML在这里:

<button id="tag-love" class="tagger disabled" data-tagtype="love"><i class="fa fa-heart fa-fw"></i></button>
<button id="tag-important" class="tagger disabled" data-tagtype="important"><i class="fa fa-exclamation fa-fw"></i> Important</button>
<button id="tag-more" class="tagger disabled" data-tagtype="more"><i class="fa fa-ellipsis-h fa-fw"></i> More</button>
<button id="tag-confused" class="tagger disabled" data-tagtype="confused"><i class="fa fa-question fa-fw"></i> Confused</button>
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为似乎没有关于哪些返回未定义的模式.有时它们都工作,有时其中一个返回undefined几秒钟,但如果我一直点击它返回正确的值.

在调用任何这些方法之前,View肯定会被渲染/加载到DOM中.

有任何想法吗?Backbone可能会做些什么吗?

javascript jquery custom-data-attribute backbone.js backbone-views

3
推荐指数
1
解决办法
1103
查看次数

JavaScript 正则表达式不返回匹配组

我正在尝试获取字符串中方括号之间的内容,但我的正则表达式不起作用。

正则表达式: /\[([^\n\]]+)\]/g

它在 regex101 上返回正确的匹配组,但是当我尝试类似的操作时'[a][b]'.match(/\[([^\n\]]+)\]/g),我得到的['[a]', '[b]']不是['a', 'b'].

如果我迭代并执行 RegExp.exec,我可以获得正确的结果,但是从在线查看示例来看,我似乎应该能够使用 String.match 获取匹配组

javascript regex

2
推荐指数
1
解决办法
2148
查看次数