2013-01-31 46 views
2

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

的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> 

回答

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 plugin可用于恢复.live()功能。