2

$(#email).attr('value')入力の元のデフォルト値を提供する必要がありますが、jQuery 1.8.1 では現在の値を提供します。どうしてこれなの?この変更はいつ行われましたか? これらの変更を認識し、物事が期待どおりに機能しないことに気付いた後にそれらに遭遇しないようにするには、どのような手順を実行する必要がありますか. ありがとうございました

http://jsfiddle.net/ufrHD/2/ jQuery 1.8.1 を使用

http://jsfiddle.net/ufrHD/3/ jQuery 1.9.1 を使用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> 
        <title>Input</title> 
        <script src="http://code.jquery.com/jquery-1.8.1.js" type="text/javascript"></script> 
        <script type="text/javascript">
            $(function() {
                $("#click").click(function() {alert("$('#email').val()="+$('#email').val()+"\n$('#email').attr('value')="+$('#email').attr('value'));});
            });
        </script>
    </head>

    <body>
        <button id="click">Click</button>
        <input type="email" name="name" id="email" value="email@example.com" />
    </body> 
</html>
4

2 に答える 2

3

この変更は、http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-およびいくつかのブログ投稿に記載されているように、1.9 で行われました。1.9 より前の古い動作はバグでした。

変更を認識する最善の方法は、ブログの投稿と api.jquery.com のドキュメントを読むことです。明確化が必要なドキュメントの問題がある場合は、https://github.com/jquery/api.jquery.com/で問題またはプル リクエストを提出してください。

于 2013-05-07T13:54:48.593 に答える
2

$.attr('value')デフォルト値を返す必要があることは明らかではありません。経験則として、何かが明らかでない場合、走行距離は異なる可能性があります。

したがって、これを使用してデフォルト値を取得しないでください。代わりに、後で取得できるように要素内にデフォルト値を保存します。

$(function () {
    $("[value]").each(function () {
        $(this).attr("data-def-value", $(this).val());
    });
);

次に、次を使用して取得できます。

$(element).attr("data-def-value");

編集:billyonecanが指摘したように、要素にアクセスできますdefaultValue

于 2013-05-07T13:54:55.317 に答える