如何解决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'); });
});
就这样!
你应该试试这个:
$(document).ready(){
$("#clickme").click(function(){
alert("you've clicked me!");
})
}
与点击工作,但我需要与... –
如何:$(“#clickme”)。on(...)? – Rikky
嘿!有用!! ..但现在我不明白为什么?有什么区别$(document).on('clickme')和$(clickme).on? –
请问,如果你提供一个完整的HTML/JavaScript代码,而不是用于件应答者更容易。 –
我不明白,是在“myform/script.js”中声明的点击处理程序还是什么? –
是的,每次显示对话框时都会执行脚本,查看完整示例。你会明白为什么 –