为什么我需要在此代码中使用setTimeout

时间:2015-01-20 03:41:15

标签: javascript jquery web frontend

$(document).on('click', '#JS_btn1', function(e) {
  var self = $(this);
  setTimeout(function(){
    self.parent('div').html('<a href="javascript:void(0);" class="btn_ok" id="JS_btn2">OK</a>');
  });
})

代码显示在完成侦听器事件之前#JS_btn1被#JS_btn2替换。现在问题是为什么我需要在IE7 / 8中使用setTimeout来防止错误?

1 个答案:

答案 0 :(得分:1)

最有可能的是,IE 7/8持有对您要替换的DOM节点的引用,然后尝试检索nodeName。由于在您的函数中删除了节点,并且从DOM中删除了IE,因此IE会抛出错误。调用setTimeout()允许调用者在替换之前释放该节点。