Javascript 在jQuery对话框中运行jQuery切换脚本时遇到问题

Javascript 在jQuery对话框中运行jQuery切换脚本时遇到问题,javascript,jquery,dialog,Javascript,Jquery,Dialog,我有一个菜单,它使用jQuery切换功能打开和关闭子菜单。这在我的所有页面中都运行得非常好,但是,当我尝试将相同的菜单和子菜单添加到jQuery对话框中时,它不会打开子菜单 这是我的index.php代码,包括页面中的javascript包含: <script src="javascripts/jq/jquery-1.4.2.min.js"></script> <script src="javascripts/jq/jquery-v1.8.3.js"><

我有一个菜单,它使用
jQuery
切换功能打开和关闭子菜单。这在我的所有页面中都运行得非常好,但是,当我尝试将相同的菜单和子菜单添加到
jQuery
对话框中时,它不会打开子菜单

这是我的
index.php
代码,包括页面
中的
javascript
包含:

<script src="javascripts/jq/jquery-1.4.2.min.js"></script>
<script src="javascripts/jq/jquery-v1.8.3.js"></script>
<script src="javascripts/jq/jquery-v1.9.2.js"></script>

<p align="center" id="temp_menuOpener">[Click Here to Toggle Menu]</p>

<div id="temp_menu">
    <table cellpadding="0" cellspacing="0" border="0">
        <tr>
        <td class="ui-corner-bl ui-corner-br cus-dialog-content"><?php include("includes/menu.php");?></td>
        </tr>
    </table>
</div>

<script>
    $( "#temp_menu" ).dialog({ autoOpen: false, width: 'inherit'});
    $( "#temp_menuOpener" ).click(function() {
    $( "#temp_menu" ).dialog( "open" );
    });
</script>
子菜单_sched
的CSS设置为
显示:无

所以,就像我说的,这个菜单工作得很好,直到它被添加到一个
对话框中,然后它就失败了。只需从
中删除
id=“temp\u menu”
即可使其正常工作,但这也会将其从
对话框中删除

我尝试将其添加到JSFIDLE中,但是我根本无法让
对话框
工作,即使我选择了
jQuery 1.8.3
库框架。所以我在我的测试服务器上设置了它,这样你至少可以明白我的意思。您会注意到,在我的测试服务器上,菜单和页面本身比我在这里发布的内容更多。我试图将静态噪声比保持在一个良好的水平:)


好的,在jsFiddle上玩了一会儿之后,我已经解决了所有的问题。首先,JavaScript不应该在对话框中。其次,您必须使用
($(“#temp_菜单”)。对话框(“isOpen”)==true)$(“临时菜单”)。对话框(“关闭”):$(“临时菜单”)。对话框(“打开”)比较是打开还是关闭对话框

这是我的工作
这里是全屏版本。

为了让代码在JSFIDLE上工作,您需要使用清晰的html,但在您的示例中我看到了PHP-。不可能知道wnat应该在那里。我从未见过一个页面中包含多个版本的jQuery,也许这就是问题所在?我还在努力寻找与您的子菜单相关的JavaScript代码。@Graham感谢您的回复和良好的建议。我在同一个页面上使用了jQuery日期选择器、对话框和颜色选择器,出于某种原因,它们都需要不同版本的jQuery。我确实试着一次一个地删除它们,看看它是如何影响每个脚本的,但是它们一个接一个地停止了工作。除了预先制作的脚本之外,我很少使用jQuery,但我认为最新的版本也会涵盖所有以前的版本。奇怪。我刚看过你的代码,在$('div#submenu_sched').toggle()行上放了一个断点;当我单击schedule并使用Firefox调试器逐步查看代码时,会显示Monthly View和Full View选项,但当我继续逐步查看时,它们再次被隐藏。这基本上就是问题所在吗?简单看一下(打开Fiebug/WebKit DOM Inspector),右键单击子菜单并设置“属性修改时中断”,发现该对话框首先显示,然后再次隐藏。似乎这完全发生在对jquerytoggle的一次调用所引发的事件链中。奇怪的非常感谢您的回复以及您为此所做的所有工作!非常感谢!看起来您所做的基本上就是创建
.toggle()的效果jQuery
函数,该函数相当于
if()else()
语句在
php
中使用的
if()else()
语句。我使用的if-else语句称为三元运算符,您可以阅读更多关于它们的内容:)仅供参考,我将返回选择答案,我现在正忙着做别的事情,几个小时内都不会再谈这个了。一旦我在我的实时项目上测试了你的答案,我就可以选择它了。再次感谢。好的,我已经试过了。正如您所建议的那样,只需将JavaScript从对话框中删除,最终一切都将正常工作。将原始的
temp_菜单
脚本保留为
.toggle()工作正常。我已经更新了小提琴,以防其他人想看。我一直坚持使用
.toggle()函数而不是使用您的解决方案,是因为我在网站上没有使用对话框的其他地方使用它。我想确保,如果我不得不对这个网站进行故障排除,或者对它进行更改,那么它对我来说是有意义的。谢谢
<script>
$(function()
    {
    $('.schedOpener').click(function()
        {
        $('div#submenu_sched').toggle();
        });
    });
</script>

<div id="menu">
    <div class="menu schedOpener">
    <img src="/roster/images/menu/schedule.png" border="0" title="Schedule" alt="Schedule">
    </div>

    <div id="submenu_sched">
        <div class="menu">
        <a href="/roster/sched/sched_month.php" target="_parent"><img src="/roster/images/menu/sched_month.png" border="0" title="Schedule Month View" alt="Schedule Month View"></a>
        </div>
    </div>

</div>