2014-10-19 176 views
0

我有一個名爲「projects」,div id =「main」>的按鈕和一個標籤在裏面。該頁面的正文寫在標籤上。當我按下按鈕時,文本將改變,使用label.text = ..在C#中的button_Click事件中。這是按鈕:asp.net&jquery淡入淡出效果

<asp:Button ID="projects" runat="server" OnClick="projects_Click"/> 

我想要做的是在更改文本時添加淡入淡出效果。我看到最簡單的方法是使用jQuery。我加了這一點:

<head> 
<script type='text/javascript'> 
    $(function() { 
     $("#projects").click(function (e) { 
      e.preventDefault(); 
      $('#main').fadeOut(1000); 
      $("#main").fadeIn(1000);    
     });   
    }); 
</script> 
</head> 

現在發生的是,如果我按下按鈕的項目,文本只淡出,然後消失在,但它沒有改變,不執行projects_Click。如果我刪除e.preventDefault(); ,文字改變但沒有消退效果。我怎樣才能讓他們一起工作?舊文本淡出,projects_Click被執行並且fadeIn開始生效。

+1

您需要了解服務端功能與客戶端功能的區別。 Javasctipt/jQuery在服務器上的瀏覽器asp.net上執行。 Ajax經常被用來彌補這個差距。在代碼中有'preventDefault();'是停止執行服務器端代碼,因爲這是按鈕的默認操作。 – 2014-10-19 11:48:54

+0

您是否嘗試過我的解決方案(第2部分)? – 2014-10-19 12:16:49

+0

我告訴你用戶'animate()' - 自定義JS函數,並從按鈕單擊調用它,但是你完全不正確的方式。 – 2014-10-19 14:13:15

回答

0

如果你能以下部分(在你的問題中提到),以JS移動,那麼它會工作..

When I press the button, the text changes, using the label.text = .. inside the button_Click event inside C#. 

比方說,該文本是XYZ,那麼你可以不喜歡這樣。

$(function() { 
     $("#projects").click(function (e) { 
      e.preventDefault(); 
      $("#main").html("XYZ"); 
      $('#main').fadeOut(1000); 
      $("#main").fadeIn(1000);    
     });   
    }); 

如果這是在服務器端的計算,然後將這些代碼塊到webmethod,做一個在ajax call.click事件,在成功處理程序設置文本並做動畫。

教程上面 - http://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

OR

我有一個建議。

  1. 在aspx中定義一個javascript函數。如下。
function animate(){ 
    $('#main').fadeOut(1000); 
    $("#main").fadeIn(1000); 
} 
  • 在按鈕點擊事件處理,設置標籤文本,使用下面的行來啓動在頁加載(動畫網頁提交/按鈕點擊事件處理程序之後後完成)。
  • Page.ClientScript.RegisterStartupScript(this.GetType(), "scr", "<script>animate();</script>");

    注意 - 你不能同時使用服務器端代碼來設置一些文字或做preventDefault設置動畫JS。這會讓你在趕上22的情況。

    0

    文字太大而無法放入腳本中。 由於它是爲一個鍵製作的,因此我最終必須使其適用於頁面上的每個鍵。

    我這樣做:

    <head> 
    <script type='text/javascript'> 
        $(function() {   
         $('#main').hide; 
         $("#main").fadeIn(1000); 
        });   
        }); 
    </script> 
    </head> 
    

    此函數執行每次頁面重新加載,並因爲這是一個頁面的網站在中間唯一的主要內容發生變化,它是在每一個按鈕點擊執行。 Aspx更改文本,jQuery立即隱藏它,並且它慢慢淡化。沒有淡出,但這種方法也很好,考慮它,我更喜歡它。

    +0

    這個答案或者像上面解釋的那樣工作,或者問題的更多細節?如果問題存在,則需要提出疑問,而不是回答。 – 2014-10-19 12:17:37

    +1

    @ user276 ...,如果您打算將其作爲我回復帖子的「答覆」發佈,請發表評論(使用「添加評論」)。順便說一句,我告訴你用戶'animate()' - 自定義JS函數,並從按鈕點擊調用,但你完全不正確的方式。 – 2014-10-19 14:13:00