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() 函数

将一个或多个事件的事件处理函数附加到选定元素。

$("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 回答