0

編集: if else ステートメントの両方が実行されます。- ボタン付きのテーブルがあります。ページの読み込み時に、ボタンのラベルが「こんにちは」の場合、別のものに変更したいと考えています。私は if-else ステートメントを持っていますが、常に両方の if else ステートメントが実行されています。ここで何が悪いのかはわかりません。

 $(document).ready( function() {

   if($('button').val() == "Hello" ) {
      alert("Hello I am in if");
      $(this).removeClass('btn-danger');
      $(this).addClass('btn-primary');
      $(this).text('ifif');
    }
    else {
     alert("Hello I am in else");
     $(this).removeClass('btn-primary');
     $('button').addClass('btn-danger');
     $('button').text('elseelse');
    }
  });

ボタンの最初のラベルが「Hello」であっても、ボタンのラベルは毎回elseelseに変わります。最初に if の内側に入り、ラベルを ifif に変更してから、else の内側にも入ります。クリック イベント関数に入れると正常に動作します。ただし、ページの読み込み時には正しく機能しません。

あなたの応答は高く評価されます。

ありがとう

4

3 に答える 3

1

ボタンのテキストを取得するtext()メソッドではなく、メソッドを使用する必要があります。val()また、ページ内のすべてのボタンが選択されることに注意して$('button')ください。これは、おそらく必要なものではありません。

$('button').text() == "Hello"

$(this)さらに、ドキュメントの準備ができたハンドラーで使用していることに気付きましたthisが、ボタンへの参照ではないため、間違っているようです。次のようにする必要があります。

$(document.ready(function () {
    var $btn = $('#your_button_id');

    if ($btn.text() === 'Hello') {
        $btn.removeClass('btn-danger');
        //...
    }
});

「実際には、すべてのボタンを選択したいのです。」

これらのさまざまな要件に従って、できることは次のとおりです。

http://jsfiddle.net/WpJpV/1/

HTML

<button class="btn-danger">Hello</button>
<button class="btn-danger">Hello</button>
<button class="btn-danger">Hello></button>
<button class="btn-danger">Hello></button>
<button class="btn-primary">Yo</button>

JS

$(function () {
    var classes = 'btn-danger btn-primary';

    $('button:not(:contains(Hello))').toggleClass(classes).text('elseelse');
    $('button:contains(Hello)').toggleClass(classes).text('ifif');

});
于 2013-04-20T05:36:39.220 に答える
0

試す

$(function(){
    $('button').not(':contains(Hello)').removeClass('btn-primary').addClass('btn-danger').text('elseelse');

    $('button:contains(Hello)').removeClass('btn-danger').addClass('btn-primary').text('ifif');
});

デモ:フィドル

または

$(function(){
    $('button').each(function(){
        var $this = $(this);
        if($this.text() == 'Hellow'){
            $this.removeClass('btn-danger').addClass('btn-primary').text('ifif');
        } else {
            $this.removeClass('btn-primary').addClass('btn-danger').text('elseelse');
        }
    })
});

デモ:フィドル

于 2013-04-20T05:40:24.900 に答える
0

.each()関数、デモを使用する必要があります: http://jsfiddle.net/UCEAw/1/

$('button').each(function () {
    if ($(this).val() == 'hello') {
        $(this).text('Hello');
    } else {
        $(this).text('World');
    }
});
于 2013-04-20T06:11:37.757 に答える