我正在使用jQuery编写一个应用程序,当单击一个按钮时,会生成一个选择框并附加到一行。每当选择更改时,它应该触发更改事件,但使用.on("change", function() {});
不起作用:
代码:
<!DOCTYPE html>
<html>
<head>
<title>HTML5-Template</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style type="text/css">
html, body
{
}
input,select {
border: 1px solid #404048;
padding: 4px;
}
</style>
<script type="text/javascript" src="../JavaScript/JQuery/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#cmdCreateRow").click(function() {
var row = $("<div />")
.css("font", "normal 12px Verdana")
.css("padding", "8px")
.css("display", "inline-block")
.css("background", "#F0F0F8")
.css("border", "1px solid #A0A0A8")
.css("margin", "2px");
var types = [
"Local",
"Remote",
"(Custom)"
];
var type = $("<select />").attr("class", "member-type");
for(var i in types) {
type.append($("<option />").val(types[i]).text(types[i]));
};
row.append(type);
$("#Container").append(row).append($("<br />"));
});
$(".member-type").on("change", function() {
alert("changed");
});
});
</script>
</head>
<body>
<input type="button" id="cmdCreateRow" value="Create Row" />
<div id="Container">
</div>
</body>
</html>
任何想法都是我做错了什么?
答案 0 :(得分:9)
当您进行绑定时,$(".member-type")
为空,您没有做任何事情。
更改
$(".member-type").on("change", function() {
alert("changed");
});
到
$(document).on("change", ".member-type", function() {
alert("changed");
});
或者这是因为#Container元素是静态的:
$("#Container").on("change", ".member-type", function() {
alert("changed");
});
答案 1 :(得分:1)
试试这个:
$(document).on("change", ".member-type", function() {
//Code
});
这是jQuery中“live”的替代品,请参阅:http://api.jquery.com/live/
-
常规“on”方法仅适用于DOM中已有的元素。