-1

このコードをもう少しうまく書く方法について意見が欲しかったのですが、適切に機能しています.jQueryをより上手に書く方法を学ぼうとしているので、賢い人々の意見が欲しかったのです. ありがとう!

「PO」のバリエーションを探して、配送先住所フィールドに私書箱の住所が含まれているかどうかを確認し、含まれている場合は入力後に警告メッセージを表示します。

http://jsfiddle.net/ferne97/6RnxG/

(function ($) {
    var $shipAddress = $('input[name="user_data[s_address]"]'),
        message = '<div class="message hidden"><p>We <strong>don\'t ship to PO Boxes</strong>. Sorry for the inconvenience.</p></div>';

    $shipAddress.after(message);

    $shipAddress.keyup(function () {
        var $value = $(this).val();

        if ($value === 'po' || $value === 'p.o' || $value === 'PO' || $value === 'P.O') {
            $shipAddress.siblings('.message').removeClass('hidden');
        } else if ($value === '') {
            $shipAddress.siblings('.message').addClass('hidden');
        }
    });

}(jQuery));
4

1 に答える 1

1

かなり良いコードです。要素を非表示/表示するためにクラスを追加/削除しているようです。.hide()クラスを使用して要素の可視性を処理する代わりに、 andを実行できます.show()。これにより、インライン スタイルが追加/削除されますdisplay: none;

だから、代わりに

$shipAddress.siblings('.message').removeClass('hidden');
$shipAddress.siblings('.message').addClass('hidden');

あなたは簡単に行うことができます:

$shipAddress.siblings('.message').show();
$shipAddress.siblings('.message').hide();

したがって、追加の css クラスを記述する必要はありません。しかし、それは小さな改善にすぎません。それは意見の問題かもしれませんが、非表示と表示の機能を好むでしょう。

参照: http://jsfiddle.net/6RnxG/2/

于 2013-02-07T21:26:01.263 に答える