jQuery的单击不注册该玩家点击。 我在想什么?(jQuery click not regis

2019-10-21 00:20发布

上一页提问/回答: jQuery的。点击功能无法正常工作没有串

我试图通过构建回报率/ jQuery的/ HTML一个井字棋游戏,我想不通,为什么球员都没有被上点击注册。 以前我是无法得到的.val ,因为在所有的工作currentPlayer是不是一个字符串。 但现在它,只是它不显示为任意两个选择。 不知道在哪里的代码是错误的。

jQuery的:

$(document).ready(function(){

  var currentPlayer = $("#table").data("current-player");

  $(".square").click(function(){
    //   Gather the position that was clicked
    var number = $(this).data("position");
    // Locate the game form
    var form = $("form");
    // Locate the input field corresponding to that position
    var input = $("input[data-position='" + number + "']");
    // Set the value of that input field to "X" or "O"
    input.val(currentPlayer);
    // Submit the form
    form.submit();
  });
});

红宝石:

def update
  @game = Game.find(params[:id])
  @game.update(game_params)
  redirect_to @game
  switch_player
end

def switch_player
  session[:current_player] = session[:current_player] == 'X' ? 'O' : 'X'
end

HTML表格:

<%= nested_form_for @game do |f| %>

  <%= f.fields_for :moves do |move_form| %>
    <p id="table" data-current-player: <%=session[:current_player] %>>
      <%= move_form.label :position %><br>
      <%= move_form.text_field :player, data: {position: move_form.object.position} %>
      <%= move_form.hidden_field :id %>
    </p>
  <% end %>

<input type="Submit">
<% end %>

HTML表格(第一个单元格只):

<div id="board" align = center>
  <table>
    <tr>
      <td data-position="0" class="square <%= class_for_move(0)%>"></td>

红宝石class_for_move:

def class_for_move(number)
  move = @game.moves.find_by(position: number)
  player = move.player
  player.downcase + '_move' unless player.blank?
end

我觉得,鉴于还有什么,应该工作。 但是,当我运行该页面,并点击一个细胞,它里面什么也没有提交。 它出来作为<td data-position="0" class="square "></td>当它应该是<td data-position="0" class="square x_move"></td>或o_move 。

我用console.logcurrentPlayer ,它是显示为未定义。

Answer 1:

难道有什么做的语法如下: data-current-player: <%=session[:current_player] %> ,它应该是data-current-player='<%=session[:current_player] %>'



文章来源: jQuery click not registering which player is clicking. What am I missing?