2012-06-21 63 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