0

LinkedIn Javascript APIを使用してユーザーを認証する Rails アプリがあります。私がやりたいのは、ユーザーがサインアップしているかどうかに応じて要素を非表示にすることです。私はいくつかのことを試しました:

  • 前に、HTML の下部に if/else ステートメントを含むコードを配置します。</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 に答える