Я не уверен, как выполнить то, что я хочу сделать, что вначале казалось простым. Я хочу добавить класс 'visited'
к ссылке, по которой щелкнули, перед вызовом связанного содержимого в iframe fancybox.
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'
});
});