簡體   English   中英

記住最近的點擊

[英]remember most recent click

因此,我希望在您轉到單擊頁面后能夠為鏈接設置不同的樣式。 我一直在使用以下代碼:

$(document).ready(function(){
var url = document.URL;
function contains(search, find) {
    return search.indexOf(find) !== -1;
};
$('#topbar a').each(function(){
    var link = $(this).attr('href');
    var answer = contains(link,url);
    if(answer === true){
        $(this).addClass('check');
    }
    else{
        $(this).addClass('nocheck');
    };
});
});

這通過導航欄中的鏈接檢查它是否與鏈接在同一頁面上,並且它有效,但我無法在一個特定情況下使用它:隨機。

我有一個鏈接,從我的頁面生成一個隨機頁面,因此它沒有指定的鏈接,因為它鏈接到一個函數來隨機生成頁面(注意:我無法更改功能或訪問它的信息)。

那么我怎么能檢測到之前點擊了隨機鏈接所以我可以給它.check

如果我正確理解你的問題,你的函數不適用於random鏈接,因為它有像http://mysite.com/random這樣的href ,但是服務器會實際上將你重定向到另一個頁面,比如http://mysite.com/about-me ,因此活動頁面的url與隨機按鈕的href不匹配,並且它不會獲得活動狀態。

有人可能會爭辯說你是否希望它獲得活躍狀態,因為再次點擊它不會(可能)帶你到同一頁面,但這就是問題。

我可以看到解決這個問題的方法。

服務器端:
而不是重定向到ie。 http://mysite.com/about-me在隨機函數中,你也可以重定向到http://mysite.com/about-me?random 通過添加此get變量,您不應該更改鏈接的行為(除非您有一些非常嚴格的控制器,或者實際使用該變量,但這不太可能)。 然后,您可以使用javascript檢測該變量是否存在於URL中,然后激活random按鈕。

像這樣的東西:

$(document).ready(function(){
  var url = document.URL;
  // check for random
  if (url.indexOf('?random') >= 0) {
     $('#topbar a.random').addClass('check');
  }
  // check all other
  $('#topbar a:not(.random)').each(function(){
      if($(this).attr('href').indexOf(url) >= 0){
         $(this).addClass('check');
      }
      else{
         $(this).addClass('nocheck');
      };
  });
});

曲奇餅:
如果你沒有訪問服務器端隨機控制器,你可以通過使用cookie完全使用javascript(我知道通過頁面請求保持變量的唯一方法)。

單擊random按鈕,您將首先使用javascript將random cookie設置為true,然后讓實際鏈接執行此操作。 在進入頁面時,您可以執行與我之前的選項類似的檢查,但是您可以檢查cookie是否為tre,而不是網址。 如果是這樣,您將其更改為false(因此在下一頁請求時,隨機按鈕將不再處於活動狀態)並將random按鈕設置為活動狀態。

我相信第一個解決方案是首選(Cookie應該只作為最后的手段使用,它們會在每個頁面請求時發送,這意味着額外的數據,並且您的用戶可能禁用了Cookie,或者可能存在禁止使用Cookie的法律,所以函數不能總是工作),我不會寫javascript了。 請隨意詢問您是否更喜歡此解決方案,但需要進一步的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM