2

我有一个关于.live触摸事件的简单问题。我想要做的是当用户点击/触摸页面主体(容器)时,该refreshCanvas函数被调用。但是,这似乎对我不起作用。

JavaScript:

<script type="text/javascript">
  function refreshCanvas () {
    var code = document.getElementById('iframe');
    code.src = code.src; // that is the essence here
  }
  setInterval(refreshIframe1, 20000);
  function refreshIframe1() {
    $("#iframe")[0].src = $("#iframe")[0].src;
  }
  $('#container').live("tap", function() {
    refreshCanvas();
  });
</script>    

HTML:

  <a href="javascript:refreshCanvas()"><img src="data/refresh.jpg"></a>
  <div id="container">  
    <iframe id="iframe" src="data/canvas.html"  z-index: 0; style="border: 0; position:absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%"></iframe> 
  </div>
4

2 回答 2

7

如果您使用的是最新版本的 jQuery (1.9),他们已经.live()完全删除了绑定事件的方法,并建议您使用/学习该.on()方法。

$('.something').live('event', function(){...});

相当于

$(document).on('event', '.something', function(){...});
于 2013-01-31T21:54:01.893 回答
1

.live自 v1.7 起已在 jQuery 中弃用,并已在 v1.9 中删除。

您应该将其替换为.on().

.on有 2 种用于绑定元素的语法,而.live只有 1 种。

如果元素在您绑定时存在,您可以这样做:

$('.element').on('click', function(){ });

您甚至可以使用速记:

$('.element').click(function(){ });

如果该元素当时不存在,或者将添加新元素(这是.live通常使用的),则需要使用“事件委托”:

$(document).on('click', '.element', function(){ });

注意:您希望绑定到最近的静态元素,而不是总是document. 同时,可以使用jQuery Migrate 插件.live()来恢复功能。

于 2013-01-31T22:05:02.607 回答