0

自分がやろうとしていることを達成する方法がわかりませんが、最初は簡単に思えました。'visited'リンクされたコンテンツをファンシーボックス iframe に呼び出す前に、クリックされたリンクにクラスを追加したいと考えています。

Fancybox は、beforeLoad電話を切らない限り問題なく動作します。ページが追加されると、Fancybox をバイパスしてウィンドウをリロードするだけです。

私のbeforeLoad関数 (ここでは と呼びますadd_visited) が jQuery の使用を許可されているかどうか ( のようにaddClass)、またはそのままの JavaScript 機能に固執する必要があるかどうか ( element.setAttribute("className", "visited")) がわかりません。ここに貼り付けたコードは、渡された への参照を含む jQuery 用thisですtheClicked

ご覧のとおり、関数内での参照方法もわかりません$(this)this本質的には、実際の$.fancybox()通話から引き継ぎたいと思っています。

わかりやすくするために、.clinical_trial_linkはアンカーに適用されるクラスです。実際のコードではa.clinical_trial_link.

さらに明確にするために、リンクを訪問済みとしてマークするこの方法の相対的なメリットについて議論しているいくつかの会話を読みました。クラスを単純に使用することにはマイナス面がありますが、このサイトのようにリンクが多いサイトでは、既にクリックされたものを確認することが不可欠です。

最後に、問題のページは次の場所にあります: http://pull4parkinsonsfoundation.org/clinical_trials/

もちろん、js はここに貼り付けたものから変化します。キーボードでサバのように叩き続けます。;-)

助けていただければ幸いです。stackoverflowで皆さんが行っている優れた作業に事前に感謝します。実際に質問を投稿しなければならなかったのは、ここ数年で初めてです。

これが私のコードです:

function add_visited(theclicked) {
    $(this).addClass('visited');
}

$(document).ready(function() {
    $('.clinical_trial_link').fancybox({
        'beforeLoad': add_visited($this),
        'maxWidth': 1222,
        'maxHeight': 1222,
        'fitToView': true,
        'width': '80%',
        'height': '90%',
        'topRatio': 0.2,
        'autoSize': false,
        'closeClick': false,
        'openEffect': 'elastic',
        'closeEffect': 'elastic'
    });
});
4

3 に答える 3

7

classファンシーボックスにバインドされたセレクターに a を追加したい場合は、次$(this.element)のようなファンシーボックス コールバックのいずれかを使用してその要素を参照します。

$('.clinical_trial_link').fancybox({
  'beforeLoad': function(){
    $(this.element).addClass("visited");
  },
  'maxWidth': 1222,
  // other API options etc
});
于 2012-08-14T18:41:18.880 に答える
0

あなたがこれをしたとき:

'beforeLoad': add_visited($(this)),

$(this)関数のパラメータになりました。したがって、パラメーターを使用します --this関数にはコンテキストがありません。

function add_visited(theclicked) {
    $(theclicked).addClass('visited');
}

または、代わりにこれを行うこともできます。

$('.clinical_trial_link').fancybox({
    'beforeLoad': function(){
        $(this).addClass('visited');
    },

詳細については、この記事thisを参照してください。

于 2012-08-14T16:20:12.230 に答える