0

私はjsがあまり得意ではありませんが、基本的にボタンがあります

<%=button_to_function "✓", checkButton(), :class => "buttonGrey"%>

それは私が作ったjs関数を呼び出しています。ただし、関数の構文でエラーが発生します。

function checkButton()
{
if (this.className="buttonGrey") {
    this.removeClass('buttonGrey');
    this.addClass('buttonGreen');
}

if (this.className="buttonGreen") {
   this.removeClass('buttonGreen');
   this.addClass('buttonGrey');
}
}
4

5 に答える 5

1

ではなく==比較するために使用します。 ボタンは、最初のステートメントで変更された場合、ステートメント内にないため、2番目のステートメントで再び変更されるため常に使用されます。 また、クラスを切り替えるために使用できます。strings=
buttonGreyifelse
toggleClass

function checkButton() {
    $(this).toggleClass("buttonGrey buttonGreen");
}
于 2012-11-08T19:35:10.420 に答える
1

'buttonID'のボタンがある場合は、このようにクラスを変更できます。

$("#buttonID").removeClass("buttonGrey").addClass("buttonGreen");

またはjqueryのトグル機能を使用します

$("#buttonID").click(function () {
      $(this).toggleClass("buttonGrey buttonGreen");
    });
于 2012-11-08T19:38:35.293 に答える
1

Ruby / Railsについてはよくわかりませんが、理想的な解決策は、HTMLマークアップをJavaScriptから分離することです。HTML要素で「onClick」イベントを引き続き使用できますが、通常は、要素にIDや名前を付けてから、JavasScriptがその要素にバインドできるようにすることをお勧めします。

ID値を使用する大まかなマークアップは次のとおりです。

<%=button_to_function "✓", :class => "buttonGrey" :id => "myButton"%>

次に、checkButton()メソッドで、呼び出しを次のように更新します。

function checkButton()
{
if ($("#myButton").className=="buttonGrey") {
    $("#myButton").removeClass('buttonGrey');
    $("#myButton").addClass('buttonGreen');
}

if ($("#myButton").className=="buttonGreen") {
   $("#myButton").removeClass('buttonGreen');
   $("#myButton").addClass('buttonGrey');
}
}

それがお役に立てば幸いです、または少なくとも正しい方向にあなたを導きます:)

于 2012-11-08T20:07:14.630 に答える
0

上記の答えは部分的に正しいです。比較のために、を使用する必要があります=====適切な場合に使用することをお勧めします)。

ただし、上記のコードでは、this期待したものにはなりません。あなたの場合、それはおそらくグローバルwindowオブジェクトになります。次のような関数を使用して、入力の参照を渡す必要があります。

<%=button_to_function "✓", checkButton(this), :class => "buttonGrey"%>

function checkButton(in)
{
 if (in.className === "buttonGrey") {
    $(in).removeClass("buttonGrey");
    $(in).addClass("buttonGreen");
 }

 if (in.className === "buttonGreen") {
   $(in).removeClass('buttonGreen');
   $(in).addClass('buttonGrey');
 }
}
于 2012-11-08T19:41:49.583 に答える
0

こんにちは問題は、ifステートメントで代入演算子を使用していることです

あなたが何をしようとしているのかわかりません:

私がそのようなイベントハンドラーを書くとき、私はそれを次のように書きます:

$('#mybutton').click(function(){
  if ($(this).attr('class') === "buttonGreen") {
     $(this).removeClass('buttonGreen');
     $(this).addClass('buttonGrey');
  }
});

asp.netからボタンIDを実際に取得するには、次のコードを使用します。

$('#<%=btnMyButton.ClientID %>').click(function().....

幸運を ; )。

于 2012-11-08T19:48:14.043 に答える