2017-12-14 6 views
0

私はこのアプリを使って、APIのメンバーをアプリケーションのリストに追加できます。人が追加されるたびに、新しいブートストラップカードが作成されます。私は、特定の状況下で「Watch Stream」を無効にするボタンをクリックする方法を理解しようとしています。ユーザーが "LIVE"の場合、クラス.popover_status_onが親要素に追加されます。ユーザーが「OFFLINE」の場合は、代わりにクラス.popover_status_offが追加されます。'this'クラスがtrueの場合、ボタンを無効にする

私はこれが迅速な修正の問題になると思っていましたが、予想以上に問題があるようです。今これは私が私のコードを見てよ何で私は間違いなくそれを持っているだろうと思っている動作していないこと:

if($('.card > .card-body > h2').hasClass('popover_status_off')) { 
     $('.card > .card-body > button').prop('disabled', true); 
     } else { 
     return; 
     } 

私はそれが無効になったときに、それも「LIVE、すべてのボタンを無効にすることを実現します"もの。だから、私はそれがボタンの状態を変更することができることをクラス/ IDで指定しない方法があるかどうかを判断しようとしています。私はおそらく "this"が使えると思っていましたが、それに対してどのようなコードがうまくいくかわかりません。

フィードバックありがとうございます。

+0

無効にしたいボタンのIDを指定する必要があります。 – Ahtisham

+1

'$( '.card> .card-body> #buttonId')。prop( 'disabled'、true);' – Ahtisham

+0

あなたのHTMLコードを提供できますか? –

答えて

2

問題は、if文の中でjQueryセレクタがTHATカードに制約されていないことです。すべてのカード内のすべてのボタンを検出しています。

あなたのコードは、文字通り言う:あなたはif文を必要としない

$('.card h2.popover_status_off').parents('.card').find('button').prop('disabled', true); 

If there is card containing an h2 with class popover_status_off 
    Then find all cards that have buttons and disable them 
Else do nothing 

はこれを試してみてください。 jQueryの大きな力の1つは、要素を特定して、すべてを1つのステートメントで変更できることです。

+0

魅力的な作品!ありがとう。私がif/elseステートメントを必要としているという考え方にこだわられてしまった。 jQueryがどのように非常に直接的であるかについての洞察を本当に感謝します。 – nicer00ster

関連する問題