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