2013-05-07 54 views
0

我有一個Wordpress網站,其頁面上的所有用戶都可以看到一個圖庫。如果用戶未登錄,請阻止鏈接工作

這個想法是,如果一個非會員點擊一個圖庫縮略圖,他們會被重定向到一個註冊頁面。如果用戶已登錄,則該圖像照常顯示在燈箱中。

我正在玩這個jQuery代碼,並不能得到preventDefault位工作 - 我認爲這是因爲它是在一個條件。

$('.ngg-gallery-thumbnail a').on('click', function(event){ 

     if (!$('body').hasClass('logged-in')) { 
      alert('Not logged in!'); 
      event.preventDefault(); 
     } 
    }); 

而且我敢肯定還會有這樣使用PHP的更安全的方式 - 如果任何人都可以在正確的方向指向我,我將感激不盡!

回答

1

嘗試像

$('.ngg-gallery-thumbnail a').on('click', function(event){ 
    event.preventDefault(); 
    if (!$('body').hasClass('logged-in')) { 
     alert('Not logged in!'); 
     return false; 
    } 
    $(this).addClass('lightbox'); 
}); 

不要前給收藏類,首先檢查的條件,然後當它滿足再加入類燈箱

+0

感謝您的建議Gautam,我可以看到你有什麼想法,但由於某種原因,在警報關閉後燈箱仍然彈出。 – gurtfrobe 2013-05-08 13:24:40

+0

查看我的編輯,可能對您有幫助 – Gautam3164 2013-05-08 13:30:42

+0

謝謝。我想我要研究一種不同的方法,因爲這需要影響整個網站的更多鏈接。 – gurtfrobe 2013-05-10 01:13:13

1

on()方法的正確格式是這樣的:

$('.ngg-gallery-thumbnail').on('click', 'a', function(){ 
    if (!$('body').hasClass('logged-in')) { 
     alert('Not logged in!'); 
     return false; 
    } 
    return true; 
}); 

而且,沒有必要preventDefault()方法在這裏,因爲你在這裏使用return false

返回false調用時執行三項任務:

  1. event.preventDefault();
  2. event.stopPropagation();
  3. 停止回調執行並在調用時立即返回。
+0

感謝Palash的建議,但是它在警報啓動後仍然會載入燈箱。 – gurtfrobe 2013-05-08 13:25:24

相關問題