4

画像に qtip を適用するページのコードをフォローしました。ajax post を介して各画像の動的コンテンツを表示します。ただし、Thickbox/Jquery UI ダイアログが閉じてエラーがスローされた後、qtip は表示されません: $(this).qtip は関数ではありません

<script src="<%= Config.VirtualDir %>js/jquery.js?v=2" type="text/javascript"></script>
<script src="<%= Config.VirtualDir %>js/jquery.qtip-1.0.0-rc3.min.js?v=2" type="text/javascript"></script>

<script type="text/javascript" language="javascript">

$(document).ready(function() {
     BindQtip();
});
 function BindQtip()
 {
$('image').each(function(){
                        $(this).live('click',function() {
                            var $img = $(this);
                            if('<%= objAdminAuth.GetUserID() %>' == $img.attr('data-uid').split('|')[0])
                            {                                        
                                return false;
                            }
                           if ($img.data('qtip')) {return false;} 
                            $(this).qtip({
                                content: 'Loading...',
                                style: {
                                    border: {
                                        width: 5,
                                        radius: 10
                                    },
                                    padding: 0,
                                    textAlign: 'center',
                                    tip: true, // Give it a speech bubble tip with automatic corner detection
                                    name: 'dark' // Style it according to the preset 'cream' style
                                },
                                hide: 'unfocus',
                                show: {
                                    when: 'click', // Don't specify a show event
                                    ready: true, // Show the tooltip when ready
                                    solo: true
                                },
                                position: {
                                    corner: {
                                        tooltip: 'rightMiddle', // Use the corner...
                                        target: 'bottomLeft' // ...and opposite corner
                                    }
                                },
                                api: {
                                    // Retrieve the content when tooltip is first rendered
                                    onRender: function() {

                                        var self = this;
                                        self.content = '';
                                        $.ajax({
                                            url: window.location.href,
                                            type: 'POST',
                                            data: 'call=ajax&uid=' + $img.attr('data-uid'),
                                            success: function(resp) {
                                                self.updateContent(resp);
                                            }
                                        });

                                    },
                                    onContentUpdate: function() {
                                        var self = this;
                                    }
                                }
                            });
                        });
                        });
}
</script>

すべてのパスは正しく、他のものは完全に機能します。何か不足していますか?

どんな助けでも大歓迎です。

4

3 に答える 3

4

AJAX を使用して現在のドキュメントに HTML を挿入しているようです。この HTML は、最初のページを表示するスクリプトによっても生成されます。これは<script>、jQuery や qTip などのタグが最初のページだけでなく、AJAX 応答内にも含まれる可能性が高いことを意味します。これが当てはまる場合、これらの「後の」スクリプトはwindow.$、記述した内容と同じ結果で内部のものを上書きします。

そのため、AJAX にスクリプトが含まれているかどうかを確認し、含まれている場合は削除してください。その後、すべてが正しく機能するはずです。

于 2012-05-10T12:36:43.377 に答える
1

私はこれが疑わしい線である可能性が高いと思います:

$(this).live('click',function() {

liveドキュメントをもう一度見てください。要素ではなくセレクターを指定すると、そのセレクターが、ドキュメントに到達する特定のタイプのすべてのイベントと照合されます。

この奇妙で紛らわしい構文は、v1.7以降(またはv1.4.2の時点で利用可能だった私の好み)liveで非推奨になった理由の1つです。との両方を使用して、イベントを監視する実際の要素を指定してから、委任ビットの子孫と照合するセレクターを指定します。ondelegateondelegate

于 2012-05-10T12:37:59.867 に答える
0

あなたのセレクター$('image')は、タグ付けされたすべての HTML 要素を選択します<image>

于 2012-05-10T12:50:23.917 に答える