1

次のスニペットのコードは、disabled属性を変更した後、少なくとも属性については元の属性値を取得できないことを示していdisabledます。jQuery ドキュメントelement.getAttribute()は、元の値を取得できる必要があることを暗示しています。

ここに画像の説明を入力

ただし、selectもともと無効になっていないことは検出されません。

それで、ドキュメントは間違っていますか?ブール属性は異なりますか? 最も重要なのは、変更後に元の値を取得する方法はありprop()ますか?

私はjQuery 1.8.3を使用しており、OperaのChromium 37によって解釈されています。

$('button').on('click', function() {
  var $inputs = $('input, select');
  $inputs.each(function() {
    var $this = $(this);
    var name = $this.prop('name');
    console.log('before changing ' + name + '...');
    console.log("\tgetAttribute: " + $this[0].getAttribute('disabled'));
    console.log("\tprop: " + $this.prop('disabled'));
    console.log("\tattr: " + $this.attr('disabled'));

    $this.prop('disabled', true);

    console.log('after changing ' + name + '...');
    console.log("\tgetAttribute: " + $this[0].getAttribute('disabled'));
    console.log("\tprop: " + $this.prop('disabled'));
    console.log("\tattr: " + $this.attr('disabled'));
  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<button>Click</button>
<input name="input" type="text" disabled='disabled' />
<select name="select">
  <option>Option</option>
  <option>Option</option>
  <option>Option</option>
</select>

編集

残念ながら、.prop() と .attr()の質問は、無効のようなブール値のプロパティに関しては、実際には質問に答えていません。このフィドルを考えてみましょう: http://jsfiddle.net/garreh/uLQXc。1.8.3 で正常に動作します。ここで、「何とか」ではなく「無効」を変更するこのフォークを考えてみましょう: http://jsfiddle.net/wrn1ryjq/1。入力はもともと無効になっていません。変更後、attr も 'disabled' を返します。そのため、attr が元の値を返すというストック アンサーは正しくないように見えます。私の質問はまだ残っています: prop で変更した後、無効の元の状態を見つけるにはどうすればよいですか?

編集 それは恥ずかしいです。もちろんattr()、元の値は取得されません。ドキュメントは、そうではないと言っています。本当の問題は、で無効にした後、入力から無効の元の値を取得する方法propです。

残念ながら、このコメントによると、それは不可能です:/しかし、提案をありがとう.

4

1 に答える 1