0

我不确定如何完成我想要做的事情,这在开始时似乎很简单。我想在将'visited'链接的内容调用到fancybox iframe 之前向单击的链接添加一个类。

只要我beforeLoad挂断电话,Fancybox 就可以正常工作。添加后,页面只是重新加载窗口,绕过 Fancybox。

我不确定我的beforeLoad函数(这里称为add_visited)是否允许使用 jQuery(如 中addClass),或者我是否需要坚持使用直接的 javaScript 功能(element.setAttribute("className", "visited"))。此处粘贴的代码用于 jQuery,并引用了传入thistheClicked.

因此,如您所见,我也不确定如何$(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

如果您想要做的是将 a 添加class到绑定到 fancybox 的选择器中,请$(this.element)在任何 fancybox 回调中引用该元素,例如

$('.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 回答
0

在您的fancybox参数中使用它:

'beforeLoad': function() { 
     alert('test'); 
},
于 2018-11-20T15:08:43.013 回答