Fancybox beforeLoad回调:Javascript,jQuery和引用$ this?
我不确定如何完成我想要做的事情,在开始时,它似乎很简单。 我想在将链接的内容调用到fancybox iframe之前,将'visited'
类添加到点击的链接中。
Fancybox工作正常,只要我放弃beforeLoad
调用。 添加后,页面只需重新加载窗口,绕过Fancybox。
我不确定我的beforeLoad
函数(这里称为add_visited
)是否允许使用jQuery(如在addClass
),或者我是否需要坚持直接的javaScriptfunction( element.setAttribute("className", "visited")
)。 这里粘贴的代码是针对jQuery的,引用了在theClicked
传递的theClicked
。
所以,正如你所看到的,我也不确定如何在函数中引用$(this)
。 基本上我想从实际的$.fancybox()
调用中inheritancethis
。
并且,为了清楚起见, .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' }); });
如果你想要做的是将一个class
添加到绑定到fancybox的选择器,请在任何fancybox回调中使用$(this.element)
引用该元素
$('.clinical_trial_link').fancybox({ 'beforeLoad': function(){ $(this.element).addClass("visited"); }, 'maxWidth': 1222, // other API options etc });
当你这样做:
'beforeLoad': add_visited($(this)),
$(this)
成为函数的参数。 所以使用参数 – this
在函数中没有上下文。
function add_visited(theclicked) { $(theclicked).addClass('visited'); }
或者,您也可以这样做:
$('.clinical_trial_link').fancybox({ 'beforeLoad': function(){ $(this).addClass('visited'); },
有关详细信息,请参阅此文章 。