0

我有一个使用LinkedIn Javascript API对用户进行身份验证的 Rails 应用程序。我想做的是根据用户是否注册来隐藏一个元素。我尝试了几件事:

  • 将带有 if/else 语句的代码放在 HTML 之前的底部</body>
  • 检查是否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>
4

2 回答 2

0

使用以下命令包装您的 jquery/javascript 代码:

$(function(){
    // your code here
});
于 2012-06-21T19:34:35.583 回答
0

JavaScript 在 DOM 准备好之前执行,所以它还找不到#select

将其包裹在:

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

或者:

$(function() {
     // code
});
于 2012-06-21T19:39:16.640 回答