1

次のコードを美しくする最もエレガントな方法は何ですか? 重複したコードを取り除きたい:

$('#popup_settings_enable_name').click(function() {
    $el = $('#popup_settings_name_field');
    if ($(this).prop('checked')) {
        $el.removeAttr("disabled");
    } else {
        $el.attr("disabled", "disabled");
    }
}).each(function() {
    $el = $('#popup_settings_name_field');
    if ($(this).prop('checked')) {
        $el.removeAttr("disabled");
    } else {
        $el.attr("disabled", "disabled");
    }
});
4

3 に答える 3

3

click以下を使用して、インストール後にイベントハンドラーを簡単にトリガーできます.triggerHandler

$('#popup_settings_enable_name')
.click(function() {
    // ...
})
.triggerHandler('click');

.trigger多くの場合、 もまったく同じことを行いますが、 と の間には微妙な違いがある.triggerことに注意.triggerHandlerしてください。マニュアルページでは、それらについて明確に言及しています。

于 2013-08-25T20:25:37.537 に答える
0

クリック イベントを手動でトリガーすると、意図しない副作用が生じる可能性があります (クリック イベントが割り当てられている他のデリゲートが存在する場合はどうなるでしょうか?)

複製されたコードを独自のメソッドにリファクタリングし、そのメソッドを jQuery.click()関数に渡し、それをjQuery 関数に渡すことをお勧めし.each()ます。

于 2013-08-25T20:30:18.023 に答える