重新呈现视图后,event.currentTarget.innerHTML在IE10中为空

sac*_*024 5 javascript jquery cross-browser backbone.js internet-explorer-10

这是JSBin演示(请在Chrome和IE10中测试以查看区别)

HTML

<body>
  <div id='a'>
    <button>CLick me</button>
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)

JS

var markup = '<button>CLick me</button>';

$('#a').on('click', 'button', function() {
  $('#a').html(markup);
});

$('#a').on('click', 'button', function(event) {
  console.log(event.currentTarget.innerHTML); //.....(1)
});
Run Code Online (Sandbox Code Playgroud)

Line(1)在Chrome和Firefox中提供正确的输出,而在IE10中,我得到空字符串作为值event.currentTarget.innerHTML.它只会在div(#a)再次渲染时发生.

PS:我正在使用Backbone.js其中我重新渲染视图但是为了使问题更简单,我已经通过将骨干取出图片来改进上述问题.

ton*_*ony 3

我很好奇所以就尝试了一下。这不会回答您的问题,但可能会指出正确的方向

(1)在你的例子中,你用一个相同的按钮替换一个按钮,如果你用不同的文本替换它,你会在chrome中看到innerHTML实际上是未替换的文本

(2) 在IE中currentTarget是一个没有父级的空按钮

(3) 如果你这样做的话,它(在某种程度上)可以在 IE 和 Chrome 中工作:

event.delegateTarget.children[0].innerHTML
Run Code Online (Sandbox Code Playgroud)

(4) 文档类型没有任何区别

所以你的答案是找到 delegateTarget 和 currentTarget 之间的区别,或者只是使用 delegateTarget