Javascript 为什么jQuery要验证clobber jQuery UI?

Javascript 为什么jQuery要验证clobber jQuery UI?,javascript,jquery,jquery-ui,jquery-plugins,Javascript,Jquery,Jquery Ui,Jquery Plugins,我使用的是jQueryUI1.8.7(一个在jQueryUI站点上创建的自定义构建,它只包含对话框小部件) 我也在使用jQuery Validate 1.6插件(或者更确切地说是尝试) 我的jQuery UI标记/代码非常有用: <div id="create-snapshot" title="Create new snapshot?"> <p style="text-align:left"> <span>Name: <input id="s

我使用的是jQueryUI1.8.7(一个在jQueryUI站点上创建的自定义构建,它只包含对话框小部件)

我也在使用jQuery Validate 1.6插件(或者更确切地说是尝试)

我的jQuery UI标记/代码非常有用:

<div id="create-snapshot" title="Create new snapshot?">
  <p style="text-align:left">
    <span>Name: <input id="snapshotName" name="snapshotName" /></span><br /><br />
        <b>Snapshot type:</b><br /><br />
        <input type="radio" id="snapshotType" 
               name="snapshotType" value="0" 
               checked="checked" />Snapshot just the disks.<br />
        <input type="radio" id="snapshotType" 
               name="snapshotType" value="1" />Snapshot both disks and memory.
  </p>
</div>

$("#create-snapshot").dialog({
  autoOpen: false,
  resizable: false,
  width: 500,
  height: 250,
  modal: true,
  buttons: {
    "Create": function () {
      // ...do ajaxy stuff...
      $(this).dialog("close");
    },
    "Cancel": function () {
      $(this).dialog("close");
    }
  }
});

// Hook up <a href="#" id="create">Create Snapshot</a>
$("body").delegate("a[id='create']", "click", 
  function () {
    $("#create-snapshot").dialog('open');
    return false;
  }
);

名称:

快照类型:

仅快照磁盘。
快照磁盘和内存。

$(“#创建快照”)。对话框({ 自动打开:错误, 可调整大小:false, 宽度:500, 身高:250, 莫代尔:是的, 按钮:{ “创建”:函数(){ //…做些ajaxy的事。。。 $(此).dialog(“关闭”); }, “取消”:函数(){ $(此).dialog(“关闭”); } } }); //勾搭 $(“body”).delegate(“a[id='create'],“click”, 函数(){ $(“#创建快照”)。对话框(“打开”); 返回false; } );
标记的顺序为:

jquery-1.4.4.min.js jquery-ui-1.8.7.custom.min.js"> jquery.validate.min.js jquery-1.4.4.min.js jquery-ui-1.8.7.custom.min.js“> jquery.validate.min.js 我发现,当我包含
jquery.validate.min.js
时,它会杀死
Create Snapshot
事件处理程序。如果我删除它,jquery模式对话框将正常打开

我已经检查了Firebug/Chrome开发工具中的错误,但没有发现任何异常

为什么会发生这种情况?

更新: 快速查看版本1.6,它在jQuery库的较新版本(使用相同的方法名)中有一个已知错误,请检查。您必须升级您的验证插件


您是否尝试过更新验证插件?我猜您使用的是旧版本的

这段代码在我的机器上执行得很好(使用validate1.7):


$(文档).ready(函数(){
$(“#创建快照”)。对话框({
自动打开:错误,
可调整大小:false,
宽度:500,
身高:250,
莫代尔:是的,
按钮:{
“创建”:函数(){
//…做些ajaxy的事。。。
$(此).dialog(“关闭”);
},
“取消”:函数(){
$(此).dialog(“关闭”);
}
}
});
//勾搭
$(“body”).delegate(“a[id='create'],“click”,函数(){
$(“#创建快照”)。对话框(“打开”);
返回false;
});
});

名称:

快照类型:

仅快照磁盘。
快照磁盘和内存。


如果你把两者颠倒过来会怎么样?@drach-试过了,没什么区别。是的,我也这么想。idk,我在读它之前已经没有主意了:S…听起来像是个棘手的错误。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title></title>
        <link rel="stylesheet" type="text/css" href="../../css/smoothness/jquery-ui-1.8.7.custom.css">
        <script type="text/javascript" src="../../js/jquery-1.4.4.min.js"></script>
        <script type="text/javascript" src="../../js/jquery-ui-1.8.7.custom.min.js"></script>
        <script type="text/javascript" src="../../js/jquery.validate.min.js"></script>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript">
            $(document).ready(function() {
                $("#create-snapshot").dialog({
                    autoOpen: false,
                    resizable: false,
                    width: 500,
                    height: 250,
                    modal: true,
                    buttons: {
                        "Create": function () {
                            // ...do ajaxy stuff...
                            $(this).dialog("close");
                        },
                        "Cancel": function () {
                            $(this).dialog("close");
                        }
                    }
                });

                // Hook up <a href="#" id="create">Create Snapshot</a>
                $("body").delegate("a[id='create']", "click", function () {
                    $("#create-snapshot").dialog('open');
                    return false;
                });

            });
        </script>
    </head>
    <body>
        <a href="#" id="create">Create Snapshot</a>
        <div id="create-snapshot" title="Create new snapshot?">
            <p style="text-align:left">
                <span>Name: <input id="snapshotName" name="snapshotName" /></span><br /><br />
                <b>Snapshot type:</b><br /><br />
                <input type="radio" id="snapshotType"
                       name="snapshotType" value="0"
                       checked="checked" />Snapshot just the disks.<br />
                <input type="radio" id="snapshotType"
                       name="snapshotType" value="1" />Snapshot both disks and memory.
            </p>
        </div>

    </body>
</html>