jquery 1.11.1 - live vs on

时间:2014-10-30 11:20:34

标签: javascript jquery live

对于1.7,不赞成直播活动 - 我使用当前的1.11.1 jquery版本。 现在,同样在文档上说,对于1.9 jquery来说,直播被删除了 - 很好。 对于下一个案例

<script type="text/javascript">

    $(document).ready()
{
    $("#submitFile").live('click', function (e) {
        alert('button clicked');
        e.preventDefault();
        alert(1); 
    });

    $('#fileCtrl').live('change', function (event) {
        alert(1);
    });

   <!--  this was a typo from-->
    $('#fileCtrl').live('on', function (event) {
        alert(1);
    });

}
</script>



<div id="uploadDiv">
    <input name="import" value="import" type="file" id="fileCtrl" />
    <input type="submit" value="export" id="fileupload"  />
</div>

对于我目前的项目,我不得不重新使用直播。 &#34; on&#34;事件简单不会发生。 有什么理由吗? 我尝试使用live并且它工作,它在doc上说它在1.9版本上删除了。 对此有何提示?为什么现场仍在工作?为什么&#34; on&#34;没有按&#39;吨?

提前致谢。

5 个答案:

答案 0 :(得分:4)

您需要重新排列调用堆栈。这意味着,您需要定位能够捕获所需的所有click事件的父节点,并将其绑定为

$('the_parent_node_probably_document_body').on('click', '#submitFile', function( e ) {
});
说到这一点,从ID选择器委托任何事件并没有多大意义,因为它只会在你的标记中出现一次,你实际上想要委派来自许多节点的事件。所以我现在很困惑。

答案 1 :(得分:0)

元素没有&#39; on&#39;事件

$('#fileCtrl').live('change', function (event) {
    alert(1);
});

$('#fileCtrl').live('on', function (event) {
    alert(1);
});

当您的代码发生变化时,您的代码意味着同样的反应。或者&#39; on&#39;事件被解雇。可能是你搞砸了&#39;改变&#39; &#39; on&#39;?

的活动

答案 2 :(得分:0)

on是一个函数,而不是DOM事件。该活动仍然被称为“改变”:

$('#fileCtrl').on('change', function (event) {
    alert(1);
});

答案 3 :(得分:0)

如简单示例所示,您不必费心使用liveon(您的第三个示例似乎是错误的,因为没有on事件。{{1是一个jQuery方法)。您的DOM就绪处理程序中也缺少on和右括号。

e.g。使用普通function并更改click

methods

请注意,此版本的最后一个示例无效,因此我将其排除在外。

如果您确实想要使用$(document).ready(function() { $("#submitFile").click(function (e) { alert('button clicked'); e.preventDefault(); alert(1); }); $('#fileCtrl').change(function (event) { alert(1); }); }); ,则新语法将为:

on

最后,如果元素被动态添加到页面中,请使用委托的事件处理程序,连接到不变的祖先(文档是默认的):

$(document).ready(function()
{
    $("#submitFile").on('click', function (e) {
        alert('button clicked');
        e.preventDefault();
        alert(1); 
    });

    $('#fileCtrl').on('change', function (event) {
        alert(1);
    });
});

Re:DOM就绪处理程序。 DOM准备就绪的简洁快捷方式就是:

$(document).ready(function()
{
    $(document).on('click', "#submitFile", function (e) {
        alert('button clicked');
        e.preventDefault();
        alert(1); 
    });

    $(document).on('change', '#fileCtrl', function (event) {
        alert(1);
    });
});

答案 4 :(得分:0)

我发现了我的错误!!!

它是关于文件准备的声明 - 我多么愚蠢!

$(document).ready()
{

无视     $(文件)。就绪(函数()

谢谢大家:)