Зачем jQuery проверять Clobber JQuery UI? - PullRequest
0 голосов
/ 16 декабря 2010

Я использую jQuery UI 1.8.7 (пользовательская сборка, созданная на сайте jQuery UI, которая содержит только виджет диалога).

Я также использую плагин 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;
  }
);

Порядок тегов <script>:

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 Ответ

1 голос
/ 17 декабря 2010

UPDATE: Беглый взгляд на версию 1.6, в ней есть известная ошибка с новыми версиями библиотеки jQuery (с тем же именем метода), посмотрите эту ссылку Вы должны обновить свой плагин проверки


Вы пытались обновить плагин проверки? Я предполагаю, что вы используете старую версию этого плагина ?

Этот код выполняется на моем компьютере очень хорошо (с проверкой 1.7 ):

<!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>
...