2

これの原因はわかりませんが、手がかりを使用してライブイベント(クリックまたはmouseenter)にバインドしていますが、いずれの場合も、1回のクリックまたはホバーイベントが発生するまで手がかりは起動しません。ajaxがロードされたコンテンツにライブイベントを使用していますが、Ajaxがロードされていないコンテンツでもこの問題が発生しています。なぜこれが起こっているのかわかりません-誰かが私がどこで間違っているのかを知ることができますか?どうもありがとう。

$("a.jTip").live("click", function(){
            $('a.jTip').cluetip({
                attribute: 'href',
                cluetipClass: 'jtip',
                arrows: true,
                activation: 'click',
                ajaxCache: false,
                dropShadow: true,
                sticky: true,
                mouseOutClose: false,
                closePosition: 'title'
            })
            return false;
        });
4

5 に答える 5

2

それは、最初のイベントが終わるまで設定していないからです。言い換えれば、(明らかに) イベントを処理し、ハンドラーで機能を設定します。その特定のイベントは手掛かりコードをトリガーしません。

それを行う代わりに、コンテンツを動的に追加するコードが常に「cluetip」セットアップを直接呼び出すようにするか、「LiveQuery」プラグインを調べて DOM の変更時に「自動」作業を行うことを検討してください。個人的には前者のアプローチを採用しますが、多くの人が LiveQuery を使用して良い結果を得ているようです。

于 2010-04-19T14:17:41.937 に答える
2

これには引き続きlivequery()プラグインを使用できます。これは次のようになります。

$('a.jTip').livequery(function() {
  $(this).cluetip({
    attribute: 'href',
    cluetipClass: 'jtip',
    arrows: true,
    activation: 'click',
    ajaxCache: false,
    dropShadow: true,
    sticky: true,
    mouseOutClose: false,
    closePosition: 'title'
  });
});

.live()を完全に置き換えたわけではなく.livequery()、別の方法で動作します。セレクターに一致する現在および新しい要素を探したい場合、.livequery()または ajax コールバックの一部としてバインドする場合 (たとえば、成功の場合$('a.jTip', data)) が最適なルートです。

于 2010-04-19T14:17:49.343 に答える
1

手がかりのヒントは、最初のクリック後まで初期化されないためです。

試す:

    $("a.jTip").live("mousedown", function(event){
        $('a.jTip').cluetip({
            attribute: 'href',
            cluetipClass: 'jtip',
            arrows: true,
            activation: 'click',
            ajaxCache: false,
            dropShadow: true,
            sticky: true,
            mouseOutClose: false,
            closePosition: 'title'
        })

        event.preventDefault();
    });

手がかりのヒントは何度も初期化されますが、次のようにします。

    $("a.jTip").live("mousedown", function(event){
        var self = $(this);

        if (!self.data('cluetip-initd')) {
          self.cluetip({
              attribute: 'href',
              cluetipClass: 'jtip',
              arrows: true,
              activation: 'click',
              ajaxCache: false,
              dropShadow: true,
              sticky: true,
              mouseOutClose: false,
              closePosition: 'title'
          }).data('cluetip-initd', true);
        };

        event.preventDefault();
    });
于 2010-04-19T14:17:06.760 に答える
0

イベントでヒントをバインドしていclickます。これが、クリップの後に手がかりのヒントにバインドされている理由です。投稿されたコードからクリックを削除すると、正常に動作するはずです。

于 2010-04-19T14:16:59.753 に答える
0

このcluetip関数は、要素を変更してツールチップの動作を与えます。コードは、ユーザーが要素をクリックしたときにのみその変更を実行します。要素がクリックされたときではなく、要素がロードされたときにそれが発生するようにします。

関数が実際にツールチップをポップアップさせるという印象を受けているようです。したがって、要素のハンドラーcluetipに含める必要があります。clickそうではありません。関数は要素をツールチップに設定し、クリック/マウスオーバーの処理自体を処理します。

于 2010-04-19T14:17:28.413 に答える