2012-03-21 20 views
0

を無効にしないオプションを選択します。jQueryの私はjQueryのコードに次の機能を持っている

function checkUNSelectBox(item){ 
    $('#DELETE option').each(function(){ <!--alert(item);--> 
     if ($(this).val() !=item) { 
      $(this).attr("disabled", "disabled"); 
      return false; 
     } 
    }); 
} 

しかし、リスト内の唯一の最初の項目は無効にされている代わりのない全ての残りの部分は、「項目」に等しいです。なぜこれはそうですか?

+0

でそれをチェックアウト? –

+0

うーん..あなたは 'return false;'を持っているから?その行を削除するだけで、より多くのアイテムが無効になります。 –

+0

BTW、 '$(this).attr(" disabled "、" disabled ");は、' this.disabled = true; 'という長時間の方法です。 – Tomalak

答えて

2

return falseに機能を追加するだけで削除する必要はありません。

function checkUNSelectBox(item){ 
{ 
    $('#DELETE option').each(function(){ 

    if($(this).val() != item) 
    { 
    $(this).attr('disabled','disabled'); 
    } 

}); 

ちょうどあなたがhttp://jsfiddle.net/上の例を設定してください可能性Demo

+0

'$(this).attr( 'disabled'、 'true');'が正しくありません。 – Tomalak

+0

ええと私はあなたに彼の提案をしています。 'return false'を削除するだけです。 – Jigs

+0

それでは、どうしてその行を変更したのですか? ; – Tomalak

0

私はあなたの要素IDを、あなたが関数からfalseを戻ってきているためだクラス

4

にそれらを変更しようとするからだと思います。これにより、eachメソッドのループが終了します。

" falseを返すことで、コールバック関数内からループを停止できます。"

http://api.jquery.com/each/

+0

些細ですが、良い説明とリンクのため+1。 :) –

+0

ありがとう!それは非常に良い説明です! –

1

ちょうどあなたがitemに等しくないthatsの1を発見した場合、関数を終了したいいけないreturn false;を削除します。

私は100%確実ではありませんが、項目に等しい項目も有効にしたくないのですか?

function checkUNSelectBox(item){ 
    $('#DELETE option').each(function(){ 
     this.disabled = (this.value !== item); // true/false 
    }); 
} 

itemに等しいオプションを有効にして、残りを無効にします。

関連する問題