0

有点啰嗦,但请耐心等待:

asp.net updatepanel 包含许多 qTip2 的表单,有些不是基于 ajax。

因此,如果我在导致回发(触发异步更新和刷新)后立即将 qTip2 悬停,则 qtip 中的 javascript 开始触发并在返回时创建 qtip,但要么是因为事件发起元素不再存在,所以 qip 只是保持打开状态(显示:块) 并出现在文档的左上角(我猜有些代码试图计算出 .position 但元素不再有)。

您可以在这里看到错误:http://www.matclad.co.uk/brick-slip-blends.aspx

尝试即单击一个设计,然后在完成后立即向左或向右移动一个。qTip 将停留在那里。您也可以在添加砖块时执行此操作,尽管时间比较困难

创建 qTip 的代码是:

//为简洁起见修剪函数

    var els = $('div.pallet li.item .photo > input, div.lower li.chosen-item .photo > input');
    els.click(function(){els.each(function(){$(this).qtip('destroy')});})

    $('div.pallet li.item .photo > input, div.lower li.chosen-item .photo > input')
    .each(function(){
                    var id = $(this).parent().attr('rel'); 
                    $(this).qtip({
                            content: {  text:'Loading...', 
                                        ajax: { contentType: 'application/json; charset=utf-8', 
                                                dataType: 'json', 
                                                url: '/brick-slip-blends.aspx/GetDataForSlip',
                                                data: '{Id:' + id + '}', type: 'POST',
                                                beforeSend: function(jqXHR, settings){
                                                                    return !Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack();
                                                },
                                                success: function(data, status){
                                                                    this.set('content.text', data.d);

                                                }, 
                                                complete: function(){} 
                                                } 
                            },
                            hide: { event: 'click mouseout' },
                            show: { delay: 500 }
                        });
                    });
    $('.qt').click(function(){$(this).qtip('destroy');});
    $('.qt').qtip();

请注意,在尝试解决此问题时,我在单击时破坏了选择器中的其他 qtip,但这并不能完全正常工作(尽管它已部分修复它)并且我也一直在尝试在 PageRequestManager 方法中做一些事情(atlas ajax API)

我应该使用什么样的策略来解决这个问题?可能的ajax排队问题?取消创建的全局开关(在传递给 qtip 的函数中)?

请帮助我一直在努力解决这个问题,任何帮助将不胜感激。

问候,

4

1 回答 1

0

好的,所以我采取了蛮力并摧毁了 qtip - 我在自己的代码中指出,我只是:

$('.qt').click(function(){$(this).qtip('destroy');});

我刚刚移到顶部销毁即

var els = $('div.pallet li.item .photo > input, div.lower li.chosen-item .photo > input, .qt');

我没有迭代所有其他 .qt 并销毁它们。然而...

我不相信这完全解决了这个问题,我无疑会回来。

于 2012-06-12T22:38:15.887 回答