2010-08-12 3 views
1

Я пишу кнопку ввода с помощью следующего кода:JQuery письменность кнопка ввода добавить

$("#QnA").append("<input type='button' name='questionSub' value='Save'/>"); 

То, что я хотел бы сделать, это захватить функцию щелчка этой новой кнопки. Это то, что я пытался:

$('input[name=questionSub]').click(function() { 
    alert('hi'); 
}); 

Это не работает для меня. Есть идеи?

ответ

3

Вы должны использовать живой метод JQuery для вновь созданных элементов

$('input[name=questionSub]').live("click", function() { 
    alert('hi'); 
}); 
+0

Это сработало! Благодарю. – webdad3

1

It works for me. (jsFiddle Example)

Просто убедитесь, что вы вызываете функцию щелчка после того, как вы приложили кнопку input.


Edit:
Вам нужно использовать только live() если вы хотите, чтобы связать функцию щелчка, прежде чем добавить вход, так как жить() присоединит обработчик события для всех элементов, которые соответствуют текущему селектор , теперь или в будущем.

jsFiddle Example

+0

То есть мой код тоже, но это не будет работать! Однако решение .live (@Marko) действительно работало. Благодарю. – webdad3

+0

@Jeff V - вам нужно только жить, если вы добавите INPUT после попытки привязки клика. –

+0

@Peter - Можете ли вы рассказать об этом дальше? Функция щелчка «после» добавляет код. Не уверен, что это то, что вы говорите. The .live для меня новичок. Очень возможно, что я делаю что-то неправильное в моем установочном коде. По какой-либо причине код в вашем примере скрипача (который совпадает с моим исходным кодом) не работает. – webdad3

3

Вы можете только связать событие элемента после того, как элемент был создан для того, чтобы убедиться, что щелчок происходит привязка после добавления ввода.

+0

номер 1 не соответствует действительности, а номер 2 .... есть, umm ... не верно :) – Marko

+2

@Marko - # 2 * is * true, вы можете привязывать событие * к элементу * только когда оно есть. '.live()' не привязывает * к элементу *, он привязывается к 'document' :) –

+0

Хорошо, я возвращаю обратно вниз. Черт бы тебя побрал Craver :) – Marko

3

Вы можете прикрепить обработчик щелчка при ее создании, как это:

$("<input type='button' name='questionSub' value='Save'/>").click(function() { 
    alert('hi'); 
}).appendTo("#QnA"); 
+0

Я мог бы это сделать, но код может быть гораздо более активным, чем просто предупреждение. – webdad3

+0

@Jeff V вполне возможно, правда. Если вам нравится сохранять видимость, вы можете поместить свой код в функцию и вызвать эту функцию - это выбор дизайна, но вполне возможно, что это лучшее решение, чем .live, потому что оно связывается с идентификатором #QnA и, следовательно, должно быть больше чем связанный с документом. –

+0

& @Mark - я мог бы использовать это решение в другой части приложения. Благодаря! – webdad3

Смежные вопросы