2012-06-21 62 views
0

我有一個使用LinkedIn Javascript API來驗證用戶的Rails應用程序。我想要做的是隱藏一個元素,取決於用戶是否註冊。我試了幾件事情:隱藏元素取決於if/else語句不工作的值

  • 在HTML的底部將代碼與if/else語句之前</body>
  • 檢查,看是否document.cookie是一個空字符串,而不是一個更具體的,如果/否則

但是,這些都沒有隱藏元素。如果在頁面完成渲染後進入瀏覽器的控制檯並粘貼我的代碼,則隱藏該元素。所以我認爲這是一個JavaScript負載問題,但我必須做錯了什麼。任何人都可以對此有所瞭解嗎?

這裏是我試過的代碼,其中沒有工作:

<%= content_for(:script_footer) do %> 
    <script type="text/javascript"> 

    // if ($('span.IN-widget:contains("inSign in with LinkedIn")').length > 0) { 
    // $('#select').hide(); 
    // } else { 
    // $('#select').show(); 
    // } 

    if (document.cookie == "") { 
     $('#select').hide(); 
    } else { 
     $('#select').show(); 
    } 
    </script> 
<% end %> 

而我的應用程序佈局:

<!DOCTYPE html> 
<html> 
<head> 
    <title>rdtrip</title> 
    <%= stylesheet_link_tag "application", :media => "all" %> 
    <%= yield(:linked_in) %> 
    <%= javascript_include_tag "application" %> 
    <%= csrf_meta_tags %> 
</head> 
<body> 

<%= yield %> 
<%= yield(:script_footer) %> 
</body> 
</html> 

回答

0

包裝你的jQuery /使用JavaScript代碼:

$(function(){ 
    // your code here 
}); 
+0

哎呦,應該已經補充說,我想這一點。仍然不起作用。雖然謝謝! – tvalent2

+0

把它加到你的帖子中要清楚。 – simo

+0

唉,我明白了。只需要清除我的cookies。不過謝謝。 – tvalent2

0

JavaScript在DOM準備好之前執行,因此它還找不到#select

把它包在任一:

$(document).ready(function() { 
    // code 
}); 

或者:

$(function() { 
    // code 
}); 
+0

謝謝!必須徹底清除我的cookie才能進行測試。 – tvalent2