0

ユーザーが自分のフォロワーとフォローしているユーザーを一覧表示するユーザーページがあります。彼が1つのボタンをクリックすると、フォロワーが表示されます。他のボタンをクリックすると、フォローしているユーザーが表示されます。

jqueryイベントが1回目ではなく、2回目に発生することを理解していません。show.html.erbでユーザーの「フォロー」リストを設定しました。そして、これが一致するshow.js.erbです。

$(function(){
    $("#trusts_list_button").click(function(){
        $("#relationship_list").html("<%= escape_javascript(render 'follows') %>");
    });
    $("#trusted_list_button").click(function(){
        $("#relationship_list").html("<%= escape_javascript(render 'followers') %>");
    });
});

ショービューは次のとおりです。

<%= @user.name %>
<%= link_to "Add friends", facebook_friends_user_path %>

<table><tr><td>
<%= link_to "Trusts", "#follows", :id => "trusts_list_button", :remote => true%></td>
<td><%= link_to "Trusted by", "#followers" , :id => "trusted_list_button", :remote => true %></td></tr></table>
<div id = "relationship_list"><%= render 'follows' %></div>

最初のクリック後、両方のボタンが完全に機能します。しかし、その最初の予備クリックは本当に私を失望させます。助けていただければ幸いです。JQueryで問題が発生したのはこれが初めてではなく、この種の単純な問題を修正することに本当に戸惑っています。

4

3 に答える 3

0

最初に..IDは常に一意である必要があります..同じIDを持つ2つの要素があります..それを変更してください

...
<%= link_to "Trusts", "#follows", :id => "trusts_list_follows_button", :remote => true%></td>
<td><%= link_to "Trusted by", "#followers" , :id => "trusted_list_followers_button", :remote => true %>
....

次に、各ボタンのクリックイベントを呼び出します

$(function(){
  $("#trusts_list_follows_button").click(function(){
    $("#relationship_list").html("<%= escape_javascript(render 'follows') %>");
  });
  $("#trusted_list_followers_button").click(function(){
    $("#relationship_list").html("<%= escape_javascript(render 'followers') %>");
  });
});

コードで発生した問題は、クリックイベントが同じボタンに対するものであったことでした..セレクターが$("#trusted_list_button"). これは、あなたの場合は両方のボタン用のボタンを選択しid=trusted_list_buttonます..したがって、クリックイベントは2番目のボタンに対してのみ発生しました...

于 2013-03-04T07:21:52.910 に答える
0

私は最近この問題を経験し、複製された要素に存在するイベントがあると判断しました-しかし、イベントを見つけたり削除したりできませんでした(イベントがあることは知っていましたが)... 1をクリック-何も、2をクリック-発生通常、クリック 3 - 2 回発射 (一種)

私の解決策は、特定の問題のある要素を再度複製し、その複製を (今回は複製イベントなしで) 使用して元のものを置き換えることでした。

$(el).replaceWith($(el).clone());

于 2014-10-20T16:55:24.937 に答える
0

簡単な修正として、これを試してください:

$(function(){
    $("#trusts_list_button").click(function(){
        $("#relationship_list").html("<%= escape_javascript(render 'follows') %>");
    }).click();
    $("#trusted_list_button").click(function(){
        $("#relationship_list").html("<%= escape_javascript(render 'followers') %>");
    }).click();
});

doc ready初めてカチッと音がしたとき。

于 2013-03-04T07:35:29.713 に答える