2017-06-15 5 views
0

いくつかのオプションを無効にしてドロップダウンがあります。そして、私はすべてのオプションを有効にしたい。select要素ですべてのオプションを有効にする

<select id="selectId"> 
    <option value="JavaScript" disabled="">JavaScript</option> 
    <option value="Angular">Angular</option> 
    <option value="Backbone" disabled="">Backbone</option> 
</select> 

JavaScriptの

これはHTMLある

var select = $("#selectId"); 
select.find("option").each(function(index, item) { 
    item.attr('disabled',false); 
}); 

しかし、私はエラーを取得する:TypeError例外:item.attrがされていない機能。ここで何が間違っていますか?

+0

使用 '$(この).ATTR(、 '無効' false)を動作するはずです;'でループまたは単に '$("#selectId option ")。removeAttr(" disabled ");'ループなし! –

+0

@PrashantShirkeはい、それは働いていて、また$(item).attr( 'disabled'、false)です。ちょっと不思議なことに、なぜ私の初期のバージョンが機能していないのですか? – user2598794

+0

'attr'はjqueryメソッドなので、jqueryオブジェクトに対してのみ機能します。 '.each'の' item'はDOM要素です。 –

答えて

3

を有効に設定し

  • すべて無効に使用 .prop()を選択する
  • 使用セレクタ:disabled

    $("#selectId option").prop('disabled', false);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
     
    <select id="selectId"> 
     
        <option value="JavaScript" disabled="">JavaScript</option> 
     
        <option value="Angular">Angular</option> 
     
        <option value="Backbone" disabled="">Backbone</option> 
     
    </select>

    disabledは、プロパティでありますprop()ではなく01を使用して変更する必要があります、あなたが.attr('disabled',false);が無効であるため、1が動作していない既存の.prop() vs .attr()

    を参照してください。 アトリビュートをfalseに設定しようとすると、これは意味がない<option disabled="false">のようなものです。私が言ったように、実際にはpropがほしいと思っています。

    あなたは.attr('disabled',false);を設定できます。どちらの方法でも、プロパティを削除する正しい方法(無効で属性であり属性ではない)はpropです。

    eachもjqueryオブジェクトを返さず、バニラDOM要素、つまりTypeError: item.attr is not a function.を返します。 itemは、jqueryオブジェクトではないため、attr関数がありません。

  • +0

    どちらも動作しています:TypeError:$(...)。prop関数ではありません – user2598794

    +0

    jqueryをロードしましたか? jqueryのどのバージョンを使用していますか? – Liam

    +0

    私は実用的な例を追加しました – Liam

    0

    var select = $("#selectId"); 
     
    select.find("option:disabled").prop("disabled",false)
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <select id="selectId"> 
     
        <option value="JavaScript" disabled="">JavaScript</option> 
     
        <option value="Angular">Angular</option> 
     
        <option value="Backbone" disabled="">Backbone</option> 
     
    </select>

    1. 反復処理する必要はありません。あなたは1行でこれを行うことができます
    1

    セレクタselect.find("option")jQuery object known as the "wrapped set"contains all the selected DOM elements)という配列のような構造を返すため、最初のバージョンが機能しません。この要素はjQueryオブジェクトではないので、attr() methodは機能しません。そのため、TypeError: item.attr is not a functionが得られます。

    更新: @Liamの場合、これは.attr('disabled', false)と下のコードから分かります。しかし、私はまだusing .prop()を好む。

    var select = $("#selectId"); 
     
    select.find("option").each(function(index, item) { 
     
        $(item).attr('disabled', false); 
     
    });
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    
     
    <select id="selectId"> 
     
        <option value="JavaScript" disabled="">JavaScript</option> 
     
        <option value="Angular">Angular</option> 
     
        <option value="Backbone" disabled="">Backbone</option> 
     
    </select>

    +0

    また、 'attr'の構文が間違っているので、' disabled'属性をfalseに設定することはできません。 – Liam

    +0

    @Liamこれは動作します:$(item).attr( 'disabled'、false); – user2598794

    +0

    [これは問題なのです](https://stackoverflow.com/a/13626608/542251)、これは間違った使い方です... – Liam

    -1

    この1つは罰金:)

    $("#selectId option").each((i,items)=>{ 
     
         $(items).attr('disabled',false) 
     
        });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <select id="selectId"> 
     
         <option value="JavaScript" disabled="">JavaScript</option> 
     
         <option value="Angular">Angular</option> 
     
         <option value="Backbone" disabled="">Backbone</option> 
     
        </select>

    +0

    Wow !!!それは恐ろしい方法で何かを混乱させたようだ。たぶん一部の人が投票を説明し、他の人にもっと害を与えるのを防ぐことができるかもしれない –

    +0

    - >私のひどい答えによると –

    関連する問題