2009-04-20 19 views
0

我有一個jQuery代碼被重複使用的asp.net mvc頁面上的可重複部分視圖,但腳本沒有執行,因爲我希望它應該。jquery腳本執行但沒有爲.show設置css

這個場景並不複雜,我有一個頁面有一個項目的多個評論,並且已登錄的用戶可以通過豎起大拇指向下按鈕「投票」或「投票下來」審覈(類似於digg)。

我有一個<span>其中ID =「spanname - 」內呈現每個場景的文字+ reviewId所以每次審查的評級是唯一可識別的(因爲它們是可重複的,因爲在頁面上存在多個評論,每個具有相同的功能),所以例如如果我要問用戶登錄,如果他們目前還不是,我有以下的HTML

<span id="login-<%=Model.EntityId%>" style="margin: 0 5px 0 5px;display:none;"> 
     Why not <a href="#">login</a> and rate this? 
</span> 

和適當的這臺

var isAuthenticated = <%=Request.IsAuthenticated.ToString().ToLower() %>; 
function initialise() 
    { 
     if (isAuthenticated) 
      {//hide login spans, unhide other spans} 
     else 
      { 
       //alert('user not logged in') 
       $('rate-<%=Model.EntityId%>').hide(); 
       $('login-<%=((GigItModel)Model).EntityId%>').show(); 
       //alert($('login-<%=((GigItModel)Model).EntityId%>')); 
      } 
    } 
    $().ready(function() 
     { 
     initialise(); 
     }); 

我已經把報警按鈕的INITIALISE()方法測試它是否檢測到登錄用戶與未登錄用戶,以及它是否引用了對象,但由於某種原因該頁面未呈現CSS屬性,並且顯示NONE的<span>(或全部如果我刪除顯示:style屬性中沒有)

任何人都可以提供洞察力,爲什麼jQuery沒有按預期執行? 在此先感謝。

回答

2

你忘了使用#你的IDS

$('#rate-<%=Model.EntityId%>').hide(); 
$('#login-<%=((GigItModel)Model).EntityId%>').show(); 
+0

Ø捕捉,是這麼簡單?我真的需要刷新我的jQuery基礎知識。非常感謝! – Nissan 2009-04-20 21:46:27

0

之前,通過ID使用#id_of_element選擇DOM elemets:

$('#rate-<%=Model.EntityId%>').hide(); 
$('#login-<%=((GigItModel)Model).EntityId%>').show(); 
2

一個建議 - 不要使用JavaScript來隱藏功能。使用ASP代碼編寫允許投票的HTML和基於該用戶登錄的登錄框。您不應該將該邏輯留給客戶端腳本,如果某人禁用JavaScript,會發生什麼情況?

然而,爲了解決您的問題,您需要在#代碼通過ID,以解決一些眼前:

$('#rate-<%=Model.EntityId%>').hide(); 
$('#login-<%=((GigItModel)Model).EntityId%>').show();