Jquery .live事件没有解雇

时间:2013-01-31 21:51:39

标签: javascript jquery jquery-mobile

我对.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>

2 个答案:

答案 0 :(得分:5)

如果您使用的是最新版本的jQuery(1.9),they have removed the .live() method of binding events entirely并建议您使用/学习.on()方法。

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

相当于

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

答案 1 :(得分:1)

自v1.7以来,

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

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

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

如果绑定时元素存在,则按以下方式执行:

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

您甚至可以使用简写:

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

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

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

注意:您希望绑定到最近的静态元素,而不是document。 与此同时,jQuery Migrate plugin可用于恢复.live()功能。