0

だから私はちょうど 3 つのリンクをしようとしています。1 つをクリックすると、対応するフォームが表示されます。私は jQuery に精通していると思っていましたが、奇妙なことが起こっているようには見えません。私のコードは次のとおりです

jQuery

$("#show_basic_selector").click(function() {
    hide().after('<%= j render("basic") %>');
});

$("#show_team_selector").click(function() {
    alert("Hello");
});

$("#show_custom_selector").click(function() {
    alert("Hello");
});

意見

<%= link_to "Show form 1", { :action => 'new_order' }, id: "show_basic_selector", remote: true %>

<%= link_to "Show form 2", { :action => 'new_order' }, id: "show_team_selector", remote: true %>

<%= link_to "Show form 3", { :action => 'new_order' }, id: "show_custom_selector", remote: true %>

私の問題は、アラート機能を使用して動作するかどうかをテストするときです。リンクをクリックすると、クリックするとランダムな数のアラート (2-15) が表示され始めます。 render 関数を使用すると、3 つすべてが非表示になり、3 つすべてのフォームが表示されます。何が起こっているのですか?

4

1 に答える 1

0

おそらく複数のイベントハンドラーをアタッチしていて、最初の関数で$(this)をターゲットにするつもりだと思います。他のイベントハンドラーのアタッチを解除して、1つだけを取得するようにしてください。アプリのどこかに設計上の欠陥やバグがある可能性があるため、これは理想的ではありませんが、次のことを試してください。

$("#show_basic_selector").off().on('click' , function() {
    $(this).hide().after('<%= j render("basic") %>');
});

$("#show_team_selector").off().on('click', function() {
    alert("Hello");
});

$("#show_custom_selector").off().on('click', function() {
    alert("Hello");
});
于 2013-01-14T22:40:29.917 に答える