簡體   English   中英

jQuery 1.11.1-現場直播

[英]jquery 1.11.1 - live vs on

至於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>

對於我當前的項目,我不得不重新使用現場。 簡單的“ on”事件不會觸發。 有什么原因嗎? 我嘗試使用live並可以正常工作,但在文檔上說它已在1.9版上刪除。 有什么建議嗎? 為什么現場直播仍然有效,為什么“開”不正常?

提前致謝。

您將需要重新安排您的調用堆棧。 這意味着,您需要定位能夠捕獲所需的所有click事件並將其綁定的父節點

$('the_parent_node_probably_document_body').on('click', '#submitFile', function( e ) {
});

話雖如此,從ID選擇器中委派任何事件實際上沒有多大意義,因為它只會在您的標記中出現一次,因此您實際上想從多個節點中委派事件。 所以我現在很困惑。

元素沒有“開啟”事件。

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

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

當“ change”或“ on”事件觸發時,您的代碼表示相同的反應。 可能是您將“更改”事件與“開”弄混了嗎?

on是一個函數,而不是DOM事件。 該事件仍稱為“更改”:

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

作為簡單的示例所示,你就懶得使用liveon (你的第三個例子似乎是一個錯誤,因為沒有on事件。 on是一個jQuery方法)。 在DOM ready處理程序上,您還缺少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);
    });
});

最后,如果將元素動態添加到頁面,請使用委托事件處理程序,該事件處理程序連接到不變的祖先(默認文檔):

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

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

回復:DOM就緒處理程序。 DOM准備就緒有一個更簡潔的捷徑,它很簡單:

$(function(){ YOUR CODE HERE });

我發現了我的錯誤!

那是在准備好文件的聲明上-我真傻!

$(document).ready()
{

$(document).ready(function()的插入

謝謝大家 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM