jQuery-Mobile 花哨的弹出框适用于 jQuery 2.1.3,但与 jQuery 2.2.4 一起使用

jQuery-Mobile fancy popup box works with jQuery 2.1.3 but breaks with jQuery 2.2.4

提问人:Laurence MacNeill 提问时间:2/14/2023 更新时间:2/14/2023 访问量:61

问:

几年前,我发现这个“花哨的警报”弹出框用于jQuery mobile。多年来,我一直在我的 Cordova 应用程序中使用它。

最近,我被告知jQuery的2.1.3版本存在安全漏洞,我需要升级。适用于 jQuery Mobile 的最新版本是 2.2.4。 所以我升级到了 2.2.4,但它打破了我的“花哨警报”弹出框。

这是我的代码:

function fancyAppAlert(alertContent){
    if ($("#fancyAlertPopup").length === 0) {
        $(':mobile-pagecontainer').pagecontainer('getActivePage').append('<div style="padding-top: 10px; ' +
            'padding-bottom: 20px; padding-left: 20px; padding-right: 20px; width: 86%" data-role="popup" ' +
            'id="fancyAlertPopup" data-theme="a" class="ui-content"><a href="#" data-rel="back" ' +
            'class="ui-btn ui-corner-all ui-shadow ui-btn-a ui-icon-delete ui-btn-icon-notext ui-btn-right">' +
            'Close</a><h4 id="fancyAlertText">' + alertContent + '</h4></div>').trigger("create");
    } else {
        $('#fancyAlertText').html(alertContent);
    }
    $("#fancyAlertPopup").popup( "open",{transition: "flip"} );
}

当我使用jQuery 2.1.3时,上面的代码会弹出一个警报窗口,显示.当我使用jQuery 2.2.4时,完全相同的代码给了我以下错误:alertContentUncaught TypeError: Cannot read properties of undefined (reading 'trigger')

很明显,是.trigger(“create”)破坏了它,但我不知道为什么。我找不到任何文档提到版本 2.1.3 和 2.2.4 之间的任何重大更改。有谁知道如何解决这个问题?我无法升级到 jQuery 3.x.x,因为我必须拥有 jQuery Mobile 1.4.5,而 jQuery 3.x.x 不适用于 jQuery Mobile 1.4.5。

感谢您提供的任何帮助。

jquery jquery -移动

评论

0赞 Laurence MacNeill 2/14/2023
还行。。。奇怪。。。如果我手动将该 <div> 添加到我的一个页面,$(“#fancyAlertPopup).popup( ”open“, {transition: ”flip“) 会抛出此错误: jquery-2.2.4.js:5017 Uncaught TypeError: e.preventDefault is not a function
0赞 deblocker 2/14/2023
您能否指定您正在使用的弹出库?使用 jQuery 2.2.4 和 JQM 1.4.5,您的代码对我来说没有问题。
0赞 Laurence MacNeill 2/16/2023
真?我尝试了很多很多小时才让它工作......永远不可能。当我切换回jQuery 2.1.4时,它开始正常工作。那个 .popup 命令是 jQuery Mobile 的一部分——除了 jQuery 和 jQuery Mobile 之外,我没有使用任何其他库......

答:

0赞 Laurence MacNeill 2/14/2023 #1

好吧,显然jQuery 2.2.4与jQuery Mobile 1.4.5不兼容。显然,与jQuery Mobile兼容的最新版本是2.1.4。这很烦人......