0

Web アプリケーションのいくつかの入力タグを動的に生成しました。

function FormElement () {
    
    this.formElement = $('<div class="formElement"></div>');
    this.formElement.append('<label for=""></label>');
    this.formElement.append('<input type="text" />');

    FormElement.prototype.addIds = function (id) {
        this.formElement.find('label').attr({'for':id});
        this.formElement.find('input').attr({'id':id});
        return this.formElement; 
    };
    FormElement.prototype.addLabelText = function (value) {
        this.formElement.find('label').html(value);
    };
    FormElement.prototype.addInputValue = function (value) {
        this.formElement.find('input').attr({'value':value});
    };
    FormElement.prototype.addClass = function (className) {
        this.formElement.attr({'class':className});
    };
    FormElement.prototype.append = function (selector) {
        $(selector).append(this.formElement);
    };
}

追加された要素には、クリック、選択などのイベントが関連付けられていないようです。私はあなたができることを読み.on()ました。一般的な方法で、考えられるすべてのイベントをすべてのタイプの要素に関連付けたいと思います。これについて最善の方法は何ですか?

4

3 に答える 3

1

特定のクラス、たとえば「foo」を持つすべての入力に対して、クリックイベントでデフォルトの動作を割り当てたいとします。

$(document).on('click','input.foo', function(){
    /* your function here */
});

このように行かない場合は、次のことを試してください。

$('input.foo').click(function(){
     /* your function here */
});

スクリプトの実行後に追加された要素ではなく、既存の要素にのみ動作が追加されます。

于 2013-05-01T13:30:10.580 に答える
0

それらに対して On() 関数を使用する必要があり ます

選択した要素に 1 つ以上のイベントのイベント ハンドラー関数をアタッチします。

$("button").on("click", 'selector',notify);


$("target").on("change",'selector', notify);
于 2013-05-01T13:29:48.107 に答える
0

動的に生成された要素の場合、イベント委任が必要です -

$(document).on('change','.yourInputClass',function(){
   var value = $(this).val();
});

http://api.jquery.com/on/

于 2013-05-01T13:30:35.853 に答える