我正在使用 Visual Studio 2010 / C# 4.0 / MVC 3 / Razor / jQuery 1.5.1 / Google Chrome 21.0.1180.83 m / Windows 7 Enterprise
这是我的确切代码,其中注释掉了非显着的东西(我认为是非显着的)。
基本上我正在创建一个<input />
元素,并且如果用户更改其值,我会尝试将更改事件绑定到它,但该事件似乎没有绑定。当我查看 Google Chrome (Ctrl + Shift + J) 中的元素时,我在“事件侦听器”下看不到任何内容。
<script type="text/javascript" src="/scripts/jquery-1.5.1.js"></script>
<script type="text/javascript">
$(function () {
// ...
$('#StoredProcedureName').change(function () {
// ...
var parameters = $('#parameters'); // <table id="parameters"></table>
$.getJSON('@Url.Action(/* */)', {
// ...
}, function (data) {
parameters.empty();
// ...
$.each(data, function (k, v) {
// ...
parameters.
append($('<tr />').
// ... Other <td /> elements
append($('<td />').
append($('<input />').
// ...
change(function () {
alert("here2"); // This alert isn't happening.
}).
addClass('testClass'). // This class is showing up though.
// ...
)
)
);
});
// ...
});
});
// ...
});
</script>
当我制作一个测试 MVC 网站并执行此操作时,它似乎可以工作。这太令人费解了。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="../../Scripts/jquery-1.5.1.js"></script>
<script type="text/javascript">
$(function () {
$("#a").append(
$("<input />").change(function () {
alert("here1");
}).attr('value', 'text')
);
$("#b").change(function () {
alert("here2");
});
});
</script>
</head>
<body>
<div id="a">
</div>
<input id="b" />
</body>
</html>
谁能告诉我为什么我的第一个警报没有被执行,尽管<input />
元素出现了,并且有正确的类?
编辑:
正在创建表以及输入元素: