2016-06-11 136 views
0

我有一個簡單的燈箱在頁面上,其中關閉圖標有一些類.closeIt。當用戶點擊關閉圖標時,我想將焦點移回到觸發燈箱的鏈接元素。jQuery:燈箱關閉事件處理

我試着添加一些函數,它需要輸入觸發鏈接和關閉圖標類的名稱。

function focusBack(triggeringLinkId,closingLinkClass){ 
    $(closingLinkClass).click(function() { 
     $(triggeringLinkId).focus(); 
    }); 
    } 

併爲每個燈箱,我手動調用該函數類似下面:

focusBack('#someLink','.closeIt') 

這種方法效果很好,如果我只有在頁面上一個收藏夾,但如果我有一個以上的燈箱,它開始將它綁定到最後一個被調用的函數,現在無論哪個燈箱關閉,焦點都會返回到我最後稱爲focusBack函數的觸發鏈接。

處理這種情況的最佳方法是什麼?

+0

我不知道添加或刪除點擊偵聽器關閉按鈕是好主意還是不好,因爲您可能會覆蓋其他點擊操作。但是,您可以使用'$(closingLinkClass).off(「click」)'在每次焦點後刪除點擊監聽器。 –

回答

0

我已經使用這個解決辦法來解決這個問題:

function focusBack(triggeringLinkId,closingLinkClass){ 
$(triggeringLinkId).click(e){ 
    $(e.target).addClass('triggeringLinkClass'); 
} 
$(closingLinkClass).click(function() { 
    $(triggeringLinkClass).focus(); 
    $(triggeringLinkClass).removeClass('triggeringLinkClass'); 
}); 
} 

我不認爲這是最好的方法,但它解決了這個問題對我來說。