0

在我使用之前jquery 1.10.xjquery ui 1.10.xprime ui 1.1

对于prime ui,有一个对话框小部件,其用法如下:

    jQuery('#div1').puidialog({  
            ...         
            modal: true,  
            width: 600
            ....           
        });

然后当jQuery('#div1').puidialog('show'); 被调用时,会弹出一个对话框并显示这个div。

但是,在我将 jquery 升级到3.4.1jquery ui 到1.12.1之后,调用jQuery('#div1').puidialog('show'); 无法显示对话框,控制台上没有错误只是说JQMIGRATE: jQuery.isWindow() is deprecated

调试后,我发现问题发生在下一个代码中primeui-1.1.js

      _initPosition: function() {
            //reset
            this.element.css({left:0,top:0});
           
            if(/(center|left|top|right|bottom)/.test(this.options.location)) {
                this.options.location = this.options.location.replace(',', ' ');

                this.element.position({
                            my: 'center',
                            at: this.options.location,
                            collision: 'fit',
                            of: window,
                            //make sure dialog stays in viewport
                            using: function(pos) {
                                var l = pos.left < 0 ? 0 : pos.left,
                                t = pos.top < 0 ? 0 : pos.top;
                                
                                jQuery(this).css({
                                    left: l,
                                    top: t                                  
                                });
                            }
                        });
            }
            else {
                var coords = this.options.position.split(','),
                x = coords[0].trim(),
                y = coords[1].trim();

                this.element.offset({
                    left: x,
                    top: y
                });
            }

            this.positionInitialized = true;
        }

如果我从 中删除of: windowthis.element.position({...})则可以显示对话框,但此对话框位于left top.

也就是说,在我将 jquery 从1.10.x升级到之后3.4.1,无法显示此 primeui 对话框。如果我从中删除of: windowthis.element.position({...})这个 primeui 对话框将显示在左上方。

我想要的是这个对话框位于center浏览器上,我该怎么做?

4

0 回答 0