2012-05-10 11 views
3

イメージにqtipを適用する私のページのコードに従っています。 ajax投稿を通じて各画像の動的コンテンツを表示します。 $(この).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> 

すべてのパスが正しく、他のものは完璧に動作関数ではありません。しかし、それはThickBoxの/ jqueryのUIダイアログが閉じた後、Qティップを表示し、エラーをスローしません。私は何か不足していますか?

ご協力いただければ幸いです。

+0

があなたの特定のコードが実行された後に発生しているJSのご登録のように見える...任意のがあるとは思いません。おそらく、別の方法(マスターに登録)を試して、あなたのjsとリンクしてテストしてみてください。 – ericosg

+1

qTipライブラリが正しく読み込まれていますか? – JJJ

+0

BindQtip()の前にalert()を入れてください。 ericosgが正しいと動作するかどうか。 – Ashwin

答えて

4

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

したがって、AJAXにスクリプトが含まれているかどうかを確認し、そうであれば削除してください。すべてが正しく動作するはずです。

+0

あなたは男です!あなたは揺れる!問題は解決しました。以前同様の問題が発生しましたか?同じリンクまたは参照は認められるでしょう。もう一度、ありがとう。 :) – user686021

+0

@ user686021:ええ、私は過去に自分自身でこの問題を抱えていました。 jQueryのソースを見ると、無条件に 'window。$'(すべてのプラグインとすべての状態を取ります)を上書きしてから、それらの部分が一緒にクリックされることがわかります。 – Jon

1

私は、これは可能性が疑わしいラインだと思う:

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

は、ドキュメントのliveをもう一度見を持っている、という考えではなく要素よりも、あなたはそれをセレクタを与えることであり、それは、その後一致しますそのセレクタは、ドキュメントに到達する特定の型のすべてのイベントと比較します。

この奇数と紛らわしい構文は(V1.4.2のように利用可能であったか、私の好み、delegate)V1.7にonを支持して非難されlive理由の一つまたはそれ以降です。 ondelegateの両方で、イベントの監視対象となる実際の要素を指定し、委譲ビットの子孫と一致するセレクタを指定します。すべてのHTML要素を選択します

0

あなたのセレクタ$('image')<image>をタグ付けし、私は

+0

ページにはHTML 要素があります。ありがとう。 – user686021

+0

何ですか?そして、私は知らないHTML 6や奇妙なバージョンを使用していますか? HTML ' '要素afaikはありません。 ''または '' – devnull69

+0

があります。実際に私はSVGを使用しています。 [this](http://www.w3.org/TR/SVG/struct.html#ImageElementHrefAttribute)を確認してください – user686021

関連する問題