2010-08-12 79 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 2010-08-12 21:38:16

1

It works for me. (jsFiddle Example)

只要确保你呼的一下功能你附加的input按钮后。


编辑:
你只需要使用live()如果你想你追加输入之前,因为活(绑定的点击功能)将一个处理程序附加到事件对于当前选择匹配所有元素,现在是或将来

jsFiddle Example

+0

这是我的代码太多,但它不会工作!但.live(@Marko)解决方案确实有效。谢谢。 – webdad3 2010-08-12 21:37:54

+0

@Jeff V - 如果您在尝试绑定点击后追加INPUT,则只需要有活动。 – 2010-08-12 21:41:01

+0

@彼得 - 你能进一步阐述一下吗?点击功能是在追加代码之后。不知道这是否是你说的。 .live对我来说是新的。我在设置代码中很可能做了一些不正确的事情。无论出于何种原因,您的提琴手示例中的代码(与我的原始代码相同)不起作用。 – webdad3 2010-08-12 21:53:11

3

元素被创建后,所以要确保点击绑定时你只能一个事件绑定到一个元素在输入被附加后。

+0

数字1不是真的,数字2 ....是,嗯...不是真的:) – Marko 2010-08-12 21:37:17

+2

@Marko - #2 *是真的,只有绑定一个事件*到元素*就可以了。 '.live()'不绑定*到元素*,它绑定到'document' :) – 2010-08-12 21:39:30

+0

好吧,我把我的downvote放回去。该死的你Craver :) – Marko 2010-08-12 21:41:19

3

当你创建你可以附上点击处理,像这样:

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

我可能可以做到这一点,但代码可能比警报更多地涉及。 – webdad3 2010-08-12 21:40:03

+0

@Jeff V很可能是真的。如果你想保留可见性,你可以把你的代码放在一个函数中并调用该函数 - 这是一个设计选择,但很可能这比.live更好,因为它绑定到#QnA id,因此应该更多高于绑定到文档的性能。 – 2010-08-12 21:45:08

+0

&@Mark - 我可能会在应用程序的不同部分使用此解决方案。谢谢! – webdad3 2010-08-12 21:56:11