0

少し長めですが、我慢してください:

多くのqTip2を含むフォームを囲むasp.netupdatepanel、一部のajaxベースの一部はそうではありません。

したがって、ポストバック(非同期更新と更新を起動する)を発生させた直後にqTip2にカーソルを合わせると、qtipのjavascriptが起動を開始し、戻り時にqtipを作成しますが、イベント発生要素が存在しなくなったため、qipは開いたままになります(display:block )そしてドキュメントの左上に表示されます(一部のコードは.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();

この問題を回避しようとすると、クリック時にセレクター内の他のqtipsが破棄されますが、これは完全には機能していません(部分的に修正されていますが)。また、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 に答える