如何解决jQuery的两次脚本执行对话框?

问题描述:

我有一个对话框($('.dialog').show()),写一个表格($.post('/form/xyz', null, function (data) { $('.dialog').html(data);}))。这种形式有一个像这样的脚本(使用Javascript/jQuery的):如何解决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> 

* 动态脚本的动态脚本/ 30a2f63d6276a21db19782b2d8c93363.js *

$(document).ready(function() { 
$(document).on('click','#clickme', function() { alert('you clicked me'); }); 
}); 

就这样!

+2

请问,如果你提供一个完整的HTML/JavaScript代码,而不是用于件应答者更容易。 –

+0

我不明白,是在“myform/script.js”中声明的点击处理程序还是什么? –

+0

是的,每次显示对话框时都会执行脚本,查看完整示例。你会明白为什么 –

你应该试试这个:

$(document).ready(){ 
    $("#clickme").click(function(){ 
     alert("you've clicked me!"); 
    }) 
} 
+0

与点击工作,但我需要与... –

+0

如何:$(“#clickme”)。on(...)? – Rikky

+0

嘿!有用!! ..但现在我不明白为什么?有什么区别$(document).on('clickme')和$(clickme).on? –