2013-05-01 6 views
0

У меня динамически генерируется тег ввода для веб-приложения.Нет событий для динамически генерируемых тегов ввода

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

Я думаю, что вы хотите:. '$ ("# Container_id") на ("щелчок",» .formElement ввода [тип = "text"] ', function() {}); ' – Ian

ответ

1

Предположим, что вы хотите назначить поведение по умолчанию на событие щелчка для всех входов с определенным классом, скажем, «Foo»:

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

Если вы не идти по этому пути и попробовать следующее:

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

затем поведение будет добавлено только к существующим элементам, а не тех, которые добавлены после сценария выполнения d.

+0

Благодарим за ваше решение. Я использовал ваше решение с селектором @Ian. Я все еще не вижу события. –

+0

Можете ли вы опубликовать код, который вы пытаетесь? На ** какое ** событие вы хотите сделать ** что **? –

+0

$ (document) .on ('click', '. FormElement input [type = "text"]', function (e) { console.log (e); }); –

0

вы должны использовать On() function на них

Приложить функцию обработчика событий для одного или нескольких событий для выбранных элементов.

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


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

Для динамически генерируемого элемента вам необходимо делегирование событий -

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

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