簡體   English   中英

升級的jQuery,.on()和document.ready不能與UpdatePanels一起使用

[英]Upgraded jQuery, .on() and document.ready not working with UpdatePanels

我已經在StackOverflow上看到了其他一些解決方案,但我特別好奇為什么這不會突然發生。 一點背景......我們仍在使用jQuery 1.7.1,我們正在嘗試修補不適用於較新版本jQuery的插件和頁面。 目前,我正在測試1.8.3。 這是問題所在:

我在UpdatePanel中有一個網格,其中包含TemplateField中的按鈕。 每個按鈕都有一個分配給它的類,當點擊時...彈出一個模態。 這完全在1.7.1下工作,我把.live事件放在document.ready中。 升級到1.8.3,我擺脫了live()並使用on(),所有這些都在document.ready中。

每當我在網格上頁面時,異步回發都會觸發,而.on()會丟失。 我做的唯一改變是升級到1.8.3。 並將live()更改為on()。 這之前有用。 為什么突然間我不能這樣做。 示例代碼如下:

$(document).ready(function () {
            $("#AppDialog").dialog({
                bgiframe: true,
                autoOpen: false,
                height: 400,
                width: 650,
                modal: true,
                resizable: false }
            });

            $(".AppEdit").on("click", function (e) {
                e.preventDefault();
                $("#AppDialog").dialog('open');
            });
});

Button位於UpdatePanel中的網格中的TemplateField內:

<asp:Button ID="btnEdit" runat="server" Text="Edit" CommandName="EditApp" CssClass="AppEdit" />

任何想法為什么會這樣? 我不想使用pageLoad,那么這里最好的選擇是什么?

.live()和.on()之間的區別在於.live()將應用於所有元素(包括將來使用ajax添加的元素),而.on()僅適用於當前在DOM中的元素。

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

這樣做是為文檔對象設置事件處理程序,每當事件冒泡並被捕獲時,它將檢查eventObject.target是否具有AppEdit類,如果是,則執行您的函數。

暫無
暫無

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

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