隐藏元素取决于if / else语句的值不起作用

时间:2012-06-21 19:26:44

标签: javascript jquery

我有一个使用LinkedIn Javascript API来验证用户的Rails应用。我想要做的是根据用户是否注册来隐藏元素。我尝试了一些事情:

  • </body>
  • 之前将带有if / else语句的代码放在HTML的底部
  • 检查document.cookie是否为空字符串,而不是更具体的if / else

然而,这些都没有隐藏元素。如果我进入浏览器的控制台并在页面完成渲染后粘贴我的代码,则该元素会隐藏。所以我认为这是一个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>

2 个答案:

答案 0 :(得分:0)

用你的jquery / javascript代码包裹:

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

答案 1 :(得分:0)

JavaScript在DOM准备好之前执行,因此它无法找到#select

将其包裹在:

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

或者:

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