0

我有一个对话框 ( $('.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'); } );
});

就这样!!!

4

1 回答 1

0

你应该试试这个:

$(document).ready(){
   $("#clickme").click(function(){
       alert("you've clicked me!");
   })
}
于 2013-07-13T10:04:31.857 回答