在jQuery的对话框中包含来自PHP的文件会误导javascript
我有3个文件(file1.php、file2.php和file3.php)。其内容如下。当我加载file1.php时,它会在一个警报框中显示两次“Hello”消息。但当我在对话框(在file2.php中)之前或之后包含file3.php时,它只显示该消息一次(这是我想要的) 有人知道问题出在哪里吗 谢谢 file1.php的内容在jQuery的对话框中包含来自PHP的文件会误导javascript,php,jquery,include,Php,Jquery,Include,我有3个文件(file1.php、file2.php和file3.php)。其内容如下。当我加载file1.php时,它会在一个警报框中显示两次“Hello”消息。但当我在对话框(在file2.php中)之前或之后包含file3.php时,它只显示该消息一次(这是我想要的) 有人知道问题出在哪里吗 谢谢 file1.php的内容 <?php some operations require_once("file2.php"); ?> <script typ
<?php
some operations
require_once("file2.php");
?>
<script type="text/javascript">
$(document).ready(function() {
var dialogOpts={
autoOpen: true,
modal: false,
height: "auto",
resizable: false,
closeOnEscape: true,
width: 700,
position: ["center",30]
}
$('#learning_activity_wizard_dialog').dialog(dialogOpts);
});
</script>
<?php
some operations
?>
<div id="learning_activity_wizard_dialog" title="Learning Activity Wizard" class="dialogbox">
some content
<?php require_once("file3.php"); ?>
</div>
<script type="text/javascript">
$(function () {
alert('Hello');
});
</script>
sometext
file2.php的内容
<?php
some operations
require_once("file2.php");
?>
<script type="text/javascript">
$(document).ready(function() {
var dialogOpts={
autoOpen: true,
modal: false,
height: "auto",
resizable: false,
closeOnEscape: true,
width: 700,
position: ["center",30]
}
$('#learning_activity_wizard_dialog').dialog(dialogOpts);
});
</script>
<?php
some operations
?>
<div id="learning_activity_wizard_dialog" title="Learning Activity Wizard" class="dialogbox">
some content
<?php require_once("file3.php"); ?>
</div>
<script type="text/javascript">
$(function () {
alert('Hello');
});
</script>
sometext
$(文档).ready(函数(){
var dialogOpts={
自动打开:对,
莫代尔:错,
高度:“自动”,
可调整大小:false,
closeOnEscape:没错,
宽度:700,
位置:[“中间”,30]
}
$(“#学习"活动"向导"对话框)。对话框(dialogOpts);
});
一些内容
file3.php的内容
<?php
some operations
require_once("file2.php");
?>
<script type="text/javascript">
$(document).ready(function() {
var dialogOpts={
autoOpen: true,
modal: false,
height: "auto",
resizable: false,
closeOnEscape: true,
width: 700,
position: ["center",30]
}
$('#learning_activity_wizard_dialog').dialog(dialogOpts);
});
</script>
<?php
some operations
?>
<div id="learning_activity_wizard_dialog" title="Learning Activity Wizard" class="dialogbox">
some content
<?php require_once("file3.php"); ?>
</div>
<script type="text/javascript">
$(function () {
alert('Hello');
});
</script>
sometext
$(函数(){
警惕(“你好”);
});
一些文字
当jQuery创建对话框时,它会将learning\u activity\u wisard\u dialog div中的所有内容复制到新的DOM节点,包括脚本标记
因此,标签在页面加载时运行一次,然后在对话框呈现时再次运行。将脚本移出该div,或者只使用一些bool来跟踪它是否已经运行。当您执行$(“#学习活动向导对话框”)。对话框(dialogOpts)代码>它将再次运行脚本
如果不希望发生这种情况,请将脚本标记移出div
的,该div将成为一个对话框。
我想这就是您的问题所在,在html中添加脚本标记将使用jquery再次加载
解决这个问题的办法是你只有。。。在div之外使用脚本
原因:脚本标记内容在内联定义时执行。因此,当显示对话框时,内容将复制到对话框中,从而生成新的内联脚本。因此,它将被执行,并显示另一个警报框 在file2.php
中,在file3.php
@Kerry的include周围缺少一个结束php标记。抱歉,我在stackoverflow中键入时出错。为什么要在对话框元素中包含javascript?你能把它移到别处吗?我把file3.php包含在dialogbox(file2.php)中,因为file3.php在alert(“Hello”)旁边有很多代码;为了使代码更具可读性,我想把它分开。除了file3.php之外,file2.php中还包含了file4.php和file5.php