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

时间:2014-02-18 08:36:43

标签: javascript jquery backbone.js cross-browser internet-explorer-10

以下是JSBin Demo(请在Chrome和IE10中测试以查看差异)

HTML

<body>
  <div id='a'>
    <button>CLick me</button>
  </div>
</body>

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)
});

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

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

1 个答案:

答案 0 :(得分:2)

我很好奇,所以有一个去。这不会回答你的问题,但可能指向正确的方向

(1)在您的示例中,您使用相同的按钮替换按钮,如果您使用不同的文本替换它,您将在chrome中看到innerHTML实际上是未替换的文本

(2)在IE currentTarget中是一个没有父

的空按钮

(3)如果你这样做,那么(有点)适用于IE和chrome:

event.delegateTarget.children[0].innerHTML

(4)doc类型没有任何区别

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