Fancybox beforeLoad Rappel: Javascript, jQuery et référencement $this?
Je ne suis pas sûr de la façon d'accomplir ce que je cherche à faire, ce qui, sur le départ, semblait simple. Je veux ajouter un 'visited'
classe à un lien cliqué avant d'appeler le contenu lié dans une fancybox iframe.
Fancybox fonctionne très bien, tant que je ne beforeLoad
appel. Lorsqu'il est ajouté, la page tout simplement de la recharge de la fenêtre, en contournant la Fancybox.
Je ne sais pas si mon beforeLoad
de la fonction (ici appelé add_visited
) est autorisé à utiliser jQuery (comme dans addClass
), ou si je dois m'en tenir à droite javaScript fonctionnalité (element.setAttribute("className", "visited")
). Le code collé ici est pour jQuery, avec une référence à un passé this
dans theClicked
.
Donc, comme vous pouvez le voir, je suis également pas sûr de la façon de se référer à $(this)
dans la fonction. Essentiellement, je veux continuer sur this
de la $.fancybox()
appel.
Et, pour plus de clarté, .clinical_trial_link
est une classe appliquée à un point d'ancrage. Dans le code il est a.clinical_trial_link
.
Pour plus de clarté, j'ai lu quelques conversations ici discutant les mérites de cette méthode de marquage liens visités. Je reçois à la baisse tout simplement à l'aide d'une classe, mais sur un site comme lien lourds comme celui-ci, en voyant ce qui a été cliqué déjà est impératif.
Enfin, la page en question se trouve ici: http://pull4parkinsonsfoundation.org/clinical_trials/
Le js, bien sûr, va changer à partir de ce qui est collé ici que je continue à agitez comme un maquereau avec un clavier. 😉
Toute aide serait appréciée, et merci d'avance pour l'excellent travail que vous faites tous sur stackoverflow. C'est la première fois que j'ai effectivement eu à post une question dans les années!
Voici mon code:
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'
});
});
Vous devez vous connecter pour publier un commentaire.
Si ce que vous voulez faire est d'ajouter une
class
du sélecteur lié à fancybox, se reporter à l'élément à l'aide de$(this.element)
dans la fancybox rappels comme.element
àthis
, j'ai vu que la classe était en effet ajouté, mais la couleur de mes liens n'était pas en train de changer. Augmenter la spécificité de la css fixe qui. Merci beaucoup!Lorsque vous avez fait cela:
$(this)
est devenu un paramètre à la fonction. Afin d'utiliser le paramètre --this
a pas de contexte dans la fonction.Ou, alternativement, vous pouvez faire ceci à la place:
Pour en savoir plus sur
this
, voir cet article.$(this)
, pas$this
. Passer le premier en tant que paramètre à la place de ce dernier. Si cela ne fonctionne pas, essayez justethis
.visited
classe. FYI.add_visited()
àadd_visited(this)
add_visited(this)
,add_visited($(this))
, etadd_visited($this)
.Utiliser ce qui est dans votre fancybox paramètres: