没有动态生成的输入标记的事件

时间:2013-05-01 13:27:57

标签: javascript jquery dynamic javascript-events

我已为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()。我想以一般方式将所有可能的事件与所有类型的元素相关联。最好的方法是什么?

谢谢大家。

3 个答案:

答案 0 :(得分:1)

假设您要为具有特定类的所有输入分配Click事件的默认行为,例如'foo':

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

如果你不这样做并尝试以下方法:

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

然后行为将仅添加到现有元素,而不是添加到脚本执行后添加的元素

答案 1 :(得分:0)

你必须使用On() function

  

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

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


$("target").on("change",'selector', notify);

答案 2 :(得分:0)

对于动态生成的元素,您需要事件委派 -

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

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