0

私はこの小さな機能を持っています:

$('.chrnumberpickerDiv select').change(function(){
    var sel = $(this),
    value = sel.closest('.chrnumberpickerDiv').find('.chrnumberpickerDivText');
    value.text(sel.find(':selected').text());
}).one('change');

私の問題は、DOM のロード時にもトリガーする必要があることです。.trigger('change')代わりに試してみ.one('change')ましたが、ループしてページの更新が止まらないようです。では、DOM でイベントをトリガーするために何ができますか?ただし、他のイベントに損害を与えたり、関数をループさせたりすることはありませんか?

4

2 に答える 2

1

あなたの質問を理解した場合、選択が変更されたときに関数をトリガーするだけでなく、ページが読み込まれたときにプログラムでトリガーして初期値を入力する必要があります。

// define the handler
var changeHandler = function() {
    var sel = $(this),
    value = sel.closest('.chrnumberpickerDiv').find('.chrnumberpickerDivText');
    value.text(sel.find(':selected').text());
};

// bind the handler
$('.chrnumberpickerDiv select').change(changeHandler);

$(document).ready(function () {
    // execute the handler on page load
    // use proxy to change what "this" means in the handler
    // (jQuery does this for you when you bind a handler through jQuery)
    $.proxy(changeHandler, $('.chrnumberpickerDiv select')[0]));
});

プロキシのドキュメント

于 2012-08-30T15:00:27.223 に答える
0

コードの代わりにこれを試してください

$(document).ready(function() {
    $('.chrnumberpickerDiv select').change(function(){
        var sel = $(this),
        value = sel.closest('.chrnumberpickerDiv').find('.chrnumberpickerDivText');
        value.text(sel.find(':selected').text());
    }).one('change');
});

複数の変更機能を割り当てないように注意してください。それ以外の場合は、変更イベントが発生したときにすべてが呼び出されます。

于 2012-08-30T14:56:51.460 に答える