2013-12-17 82 views
3

我試圖實現我不確定的事情是可行的。我想要一個切換按鈕來隱藏/顯示頁面上的元素。這很容易用jQuery完成。問題是我希望在我打開的下一頁上記住這個設置。隱藏(切換可見性)頁面之間的元素

我有20頁顯示網站價格。切換按鈕應該隱藏/顯示頁面上的價格。我不想在每次打開新頁面時進行切換,因此如果我將切換按鈕設置爲隱藏,則應該在所有頁面上隱藏價格,直到我再次點擊該按鈕。

任何人都知道如何輕鬆完成此任務?這是一個ASP頁面,所以設置一個Session變量是一個解決方案,但是使用jQuery的方式更酷,因爲元素被立即隱藏。

回答

2

有沒有辦法實現這一目標,但方法Viridis建議聽起來很可能是最好的方法。

  • 初始化價格的知名度從ASP會話變量(默認爲可見)
  • 顯示/使用按鈕
  • 更新通過一個簡單的ASP頁面的ASP會話變量的jQuery的onClick隱藏的價格,通過相同BUTTOM的AJAX的onClick叫

這將是一個簡化(和未經考驗的!)版本的ASP頁:

<html> 
<head>  
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" lang="javascript" type="text/javascript"></script> 
    <script lang="javascript" type="text/javascript"> 

     //page variable storing the show/hide flag, initialised from the session variable 
     <% if Session("hidePrices") = "Y" then %> 
      var hidePrices = true; 
     <% else %> 
      var hidePrices = false; 
     <%end if%> 

     //worker to actually show/hide the prices 
     function showHidePrices(pHidePrices) 
     { 
      if(pHidePrices) 
       $(".myPrices").hide(); 
      else 
       $(".myPrices").show(); 
     } 

     //show/hide prices button click handler 
     function showHidePricesOnClick() 
     { 
      //toggle the flag 
      hidePrices = !hidePrices; 

      //show/hide the prices 
      showHidePrices(hidePrices); 

      //toggle the flag stored in the session variable 
      $.ajax({ 
       url: "http://www.yoursite.com/showHidePrices.asp", 
       cache: false, 
       success:function(result,status,xhr){ 
        alert("Called showHidePrices.asp OK!"); 
       }, 
       error:function(xhr,status,error){ 
        alert(xhr.responseText); 
        alert(status); 
        alert(error); 
       }     
      }); 
     } 

     //hide the prices onload if necessary 
     $(document).ready(function() { 

      if(hidePrices) 
      { 
       showHidePrices(true); 
      } 
     }); 

    </script> 

</head> 
<body> 

    <p class="myPrices">price 1</p> 
    <p class="myPrices">price 2</p> 
    <p class="myPrices">price 3</p> 

    <input type="button" onclick="showHidePricesOnClick();" value="Show/Hide Prices"/> 

</body> 
</html> 

在showHidePrices.asp頁面,通過AJAX在showHidePricesOnClick方法調用的代碼,會是這樣的:

<% 
    if Session("hidePrices") = "Y" then 
     Session("hidePrices") = "N" 
    else 
     Session("hidePrices") = "Y" 
    end if 
%> 

正如我所說的,這是未經測試(並且可以更優雅的完成我當然可以),但希望能幫助你粗略地瞭解你需要做些什麼來實現你的目標。

+0

謝謝泰德發佈一個完整的頁面!非常感謝!我瞭解該頁面應該如何工作,但看起來Ajax調用不起作用。當我在瀏覽器中運行showHidePrices.asp時,會話變量被切換,但當點擊主頁面上的按鈕(上面的頁面)時,不會發生。任何想法可能是錯誤的?我編輯了下面一行,沒有別的:url:「showHidePrices.asp」。 – John

+0

我在AJAX調用中添加了一些額外的錯誤處理,希望能爲您提供一些關於失敗原因的額外信息(例如找不到頁面......)。關於jQuery AJAX調用的完整細節在這裏:http://api.jquery.com/jQuery.ajax/ – Ted

+0

我實際上第一次測試它(有點遲了,對不起!),並添加了一些有用的像jQuery的引用,在showHidePricesOnClick調用按鈕之後的一些括號,最後,在AJAX調用中設置showHidePrices.asp的正確路徑,一切都很好。希望你現在也能做到嗎? – Ted

1

你想用jQuery做第一次切換,你是如何描述它的。 然後,您需要將jQuery/js連接到您的後端(假設您的情況爲ASP),併爲SESSION中的當前用戶設置一些值。這樣,通過jQuery/javascript可以順利完成初始隱藏,之後如果您曾經加載過新頁面,則後端將不會發送您的價格,導致這些價格根本不顯示。 (這種方式你甚至不必考慮使用jQuery來刪除它們)

你將不得不編輯你所有的20頁來突然支持'dont_show_price'參數......但它會讓你得到你的結果想。

相關問題