2012-08-14 57 views
0

我不確定如何完成我期待的工作,開始時看起來很簡單。在將鏈接內容調入fancybox iframe之前,我想將一個'visited'類添加到點擊鏈接。

Fancybox工作正常,只要我離開beforeLoad電話。添加後,頁面只需重新加載窗口,繞過Fancybox。

我不知道我的beforeLoad函數(這裏稱爲add_visited)是否被允許使用jQuery(如addClass),或者我是否需要堅持直JavaScript功能(element.setAttribute("className", "visited"))。這裏粘貼的代碼是針對jQuery的,其中引用的theClicked

所以,你可以看到,我也不知道如何在函數中參考$(this)。本質上,我想從實際的$.fancybox()調用中繼承this

而且,爲了清楚起見,.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' 
    }); 
}); 

回答

7

如果你想要做的是一個class增加必然的fancybox選擇,使用$(this.element)指的是元素中任何的fancybox回調像

$('.clinical_trial_link').fancybox({ 
    'beforeLoad': function(){ 
    $(this.element).addClass("visited"); 
    }, 
    'maxWidth': 1222, 
    // other API options etc 
}); 
+0

非常好!而已。將'.element'添加到'this',我看到這個班確實被添加了,但是我的鏈接顏色沒有改變。提高CSS的特異性修復了這一點。 非常感謝! – dashard 2012-08-14 19:33:45

0

當你這樣做:

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

$(this)成爲該函數的參數。所以使用參數 - this在函數中沒有上下文。

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

,或者,你可以這樣做,而不是:

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

更多關於this,看到this article

+0

感謝您的快速回復,但兩個版本Chrome和FF(Mac,當前版本)均失敗。我已經嘗試了所有這些,同時通過我在這方面的各種嘗試進行顛簸。 爲了清楚起見,沒有添加類(查看最終的源代碼),鏈接按照原來的描述進行操作:繞過Fancybox並在瀏覽器中重新加載站點。 – dashard 2012-08-14 16:28:00

+0

哦,我錯過了你的錯字。它是'$(this)',而不是'$ this'。將前者作爲參數傳遞,而不是後者。如果這不起作用,那就試試'this'。 – wanovak 2012-08-14 16:29:57

+0

我將代碼更改爲以下*(相關代碼僅限於此處)*: function add_visited(theclicked){ \t $(theclicked).addClass('visited'); } $(文件)。就緒(函數(){ \t $( 'clinical_trial_link。')的fancybox({ \t \t 'beforeLoad':add_visited(), //其餘參數代碼... 並且鏈接在Fancybox中打開,但當然沒有'visited'類。FYI。 – dashard 2012-08-14 16:36:08