我正在创建一个页面,要求用户能够创建输入元素,我需要能够根据与其相关的事件从这些元素中检索数据。我将它们附加到文档的正文中,并且它们正在追加,但随后他们的事件没有被触发。
JSFiddle: http://jsfiddle.net/g7Sdm/2/
基本HTML:
<input type="radio" class="userInput" value="I'm a radio button that already existed when the page loaded." />Pre-Existing Radio Button
<input type="text" class="userInput userTextInput" value="Text" />
<button type="button" id="addRadio">Add Radio Button</button>
<button type="button" id="addText">Add Text Input</button>
使用Javascript:
$(document).ready(function() {
$("#addRadio").click(function() {
$("html").append("<input type=\"radio\" class=\"userInput\" value=\"I'm a dynamically added radio button!\" />New Radio Button<br />");
});
$("#addText").click(function() {
$("html").append("<input type=\"text\" class=\"userInput userTextInput\" value=\"Text\" /><br />");
});
$(".userInput").click(function() {
alert($(this).val());
});
$(".userTextInput").keyup(function() {
alert($(this).val());
});
});
感谢您的帮助!!现在已经很晚了,我需要睡觉,但我会在早上回来看看。
答案 0 :(得分:2)
更改为:
$(document).on("click", ".userInput", function() {
alert($(this).val());
});
$(document).on("click", ".userTextInput", function() {
alert($(this).val());
});
答案 1 :(得分:2)
你必须使用on()
方法,因为元素必须以二进制方式绑定
$(document).ready(function() {
$("#addRadio").click(function() {
$("html").append("<input type=\"radio\" class=\"userInput\" value=\"I'm a dynamically added radio button!\" />New Radio Button<br />");
});
$("#addText").click(function() {
$("html").append("<input type=\"text\" class=\"userInput userTextInput\" value=\"Text\" /><br />");
});
$(document).on("click","userInput",function() {
alert($(this).val());
});
$(document).on("click",".userTextInput",function() {
alert($(this).val());
});
});
以下是demo