2011-10-22 59 views
0

當用戶單擊某個菜單按鈕並導航到不同的網頁時,我試圖更改我的網站背景圖像(在身體標記處)。由jQuery設置的背景圖像重定向後重置

使用jQuery在_Layout.cshtml,做這樣的:

<body> 
<div class="page"> 
    <header> 
     <br /> 
     <div id="menubutton"> 
      <a href="@Url.Action("Index", "Kitchen")" id="bg1"> 
       <img src="../../Content/Layout_images/menu_kitchen.png" alt="kitchen" /></a> 
      <a href="@Url.Action("Index", "Stock")" id="bg2" > 
       <img src="../../Content/Layout_images/menu_stock.png" alt="stock" /></a> 
      <a href="@Url.Action("Index", "Shop")" id="bg3" > 
        <img src="../../Content/Layout_images/menu_shop.png" alt="shoppinglist" /></a> 
     </div> 

<script type="text/javascript"> 

$(function() { 
    $('#menubutton a').live('click', function() { 

     // Get the background class from id 
     var bgclass = $(this).attr('id'); 
     var temp = "url('Content/Layout_images/bg2.jpg')"; 

     $('body').css('background-image', temp); 
     alert($('body').css('background-image')); 
     // Set the clicked menu button color 
     var menuclass = bgclass + "_menu"; 
     $(this).removeClass(); 
     $(this).addClass(menuclass); 
    }); 
}); 

不過,雖然背景圖像變化時的菜單按鈕的用戶點擊,它會立即變回默認的背景在CSS中設置圖像(注意:儘管我在css中設置了任何背景圖像,但頁面重定向後它會立即變回空白背景)

任何想法爲什麼會發生這種情況?如果沒有錯,jquery .css()假設會改變特定dom的css?爲什麼導航到其他頁面後仍會重置?

希望能得到一些幫助這裏...謝謝...

+0

您確定此路徑正確嗎? url('Content/Layout_images/bg2.jpg') –

+0

是的,圖像改變了,只是它立即變回默認的一個 – shennyL

回答

1

當你點擊該按鈕,您重定向到一個新的URL和佈局文件重新加載。這意味着當你加載新的URL時,你需要一些方法來保存背景圖像信息。

@Url.Action("Index", "Kitchen", new { bgImage = 'image url here'}) 

然後在佈局文件中,寫一個js函數(內$(文件)。就緒(函數(){}))來設置這個bgImage參數作爲背景圖像。

+0

嗨,你認爲存儲背景圖像和「硬編碼」它在每個視圖是可行的嗎? – shennyL

+0

如果你想爲不同的視圖設置不同的背景圖像,那麼更好的方法是編寫一個javascript函數,根據頁面的URL設置適當的背景。這個函數可以從$(document).ready(function(){})調用,因此設置背景圖像。 – sul4bh

+0

嗨,謝謝!我一直在讓問題變得更加複雜,事實上只需要按照你所說的做:)但是,我得到一個非常緩慢的加載,並且視圖的內容有時會顯示在b4背景被改變。任何想法如何我可以解決這個問題?謝謝... – shennyL