我有一个对话框 ( $('.dialog').show()
),它编写了一个表单 ( $.post('/form/xyz', null, function (data) { $('.dialog').html( data );} )
)。该表单有一个像这样的脚本(javascript/jquery):
<script type="text/javascript" src="myform/script.js">
<form>
<input type="text" value="click me!" id="clickme" />
</form>
该脚本具有以下代码:
$(document).ready( function () {
$(document).on('click','#clickme', function () { alert('you clicked me'); } );
});
问题是:每次显示对话框时,我都需要重新执行脚本,但是当我单击时,#clickme
我收到警报,显示脚本执行的时间。
我从来没有注意到这个问题(我不知道为什么),但现在这种情况正在发生。我正在使用 jQuery 1.9.2,并且正在考虑使用函数 ( preventPropagation
),但我认为这不可靠,因为我应该在每个“on”事件中都这样做。另外,我相信做一个'脚本加载历史'可以解决控制它的问题,但是我有一个问题,当我需要在加载表单时执行函数时,我将无法像我一样自动重新执行'我现在在做。
解决方案是什么?
完整示例:
HTML
<html>
<head>
<script type="text/javascript">
$(document).ready( function () {
$('#open-dialog').on('click', function () {
$.post( '/server-form.php', null, function (data) {
$('.dialog').html( data );
});
});
});
</script>
</head>
<body>
<div class="dialog">
</div>
<input type="button" value="Open dialog" id="open-dialog"/>
</body>
</html>
PHP (服务器-form.php)
<script type="text/javascript" src="dynamic-script/30a2f63d6276a21db19782b2d8c93363.js">
<form>
<input type="text" value="click me!" id="clickme" />
</form>
* DYNAMIC-SCRIPT 动态脚本/30a2f63d6276a21db19782b2d8c93363.js *
$(document).ready( function () {
$(document).on('click','#clickme', function () { alert('you clicked me'); } );
});
就这样!!!