2017-02-02 4 views
3

の値とボタンのみを有効にする私は、次のHTMLコードを得た:はjQueryの真

<button type="button" class="btn btn-primary jumbotron-td-enable-button enb btnEnable" value="<%= enables[i]%>"> 
    Enable 
</button> 

このボタンを動的にJSONファイル上のデータを引っ張ってレンダリングされるので、私はここで、以下の値にvalue="<%= enables[i] %>

を得た私ですジャバスクリプト:

0123:

$(".btnEnable").each(function() { 
    var isEnable = $(this).val(); 
    if (isEnable == 'FALSE') { 
     $(".enb").attr("disabled", true); 
    } 
}); 

私の問題は、それはそれ、ボタンのすべて、例えばボタンの値がこのようなものですがないことです

FALSE 
TRUE 
TRUE 
FALSE 

だから、私は偽のボタンだけを無効にしたいだけです。私はIDを使用しようとしなかったし、それは私が何をしたいんが、問題はそれだけで最初のFALSE値を取得しているとされていない他の

答えて

2

問題は、$('.enb')がすべてのボタンを選択するためです。代わりに、each()コール内のthisキーワードを使用して、繰り返しの現在のボタンを参照する必要があります。

$(".btnEnable").each(function() { 
    var isEnable = $(this).val(); 
    $(this).prop("disabled", isEnable == 'FALSE'); 
}); 

注意あなたがif条件を削除することができることを意味し、isEnableのいずれかの状態のために働くだろうそれにブール値を供給できるよう、ここでprop()の使用、これを試してみてください。

1

あなたは一致するすべての要素を選択します$(this)

.enb.enbを置き換えることができるということです。 $(this)はループ内の現在のものだけを選択します。

$(".btnEnable").each(function() { 
    var isEnable = $(this).val(); 
    if (isEnable == 'FALSE') { 
     $(this).attr("disabled", "disabled"); 
     //$(this).prop("disabled", true); 
    } 
}); 
2

あなたはほとんどそこにいる - あなたは重要なファクター「これ」がある

$(this).val(); 

を使用して、現在のボタンの値を得ました。各ループの現在の反復の対象となる要素を参照します。

だからのみ現在のボタンのdisabledプロパティを変更するには、同じ原則が適用されます。

$(".enb").attr("disabled", true); 

が.enbセレクタを使用して

$(this).attr("disabled", true); 

になる必要があり、あなたが気づいたように、無効になりますクラス "enb"を持つすべてのボタン。さらにそれを絞り込むこと

、jQueryのドキュメントでは、この種のプロパティを設定するというよりも、.attr().prop()を使用することをお勧めし

$(this).prop("disabled", true); 
(お使いのjQueryのバージョンを想定して> = 1.6です)
関連する問題