Почему FF на OS X теряет jQuery-UI в обработчике событий щелчка? - PullRequest
1 голос
/ 28 марта 2012

На веб-странице с использованием jQUery 1.7.1 и jQUery-UI 1.8.18, если я выведу $ .ui в поле предупреждения, когда документ будет готов, я получу [объект объекта]. Однако при использовании Firefox, если я выводю $ .ui в обработчик события click, в результате я получаю «undefined». В других браузерах (последние версии IE, Chrome и Safari) результат по-прежнему остается [объект объекта] при нажатии на ссылку.

Вот моя HTML-страница:

<!doctype html>
<html>
<head>
    <title></title>

    <script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-ui-1.8.18.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(document).ready(function () {

            alert($.ui);    // ALERT A

            $(document).on("click", ".dialogLink", function () {
                alert($.ui);    // ALERT B
                return false;
            });
        });
    </script>

</head>
<body>
    <a href="#" class="dialogLink">Click me!</a>
</body>
</html>

В этом посте я сократил до самой простой формы еще одну проблему, которую я описал здесь: $ (this) .dialog не является функцией . Для ясности я создал новый пост, поскольку реальный вопрос теперь отличается от исходного вопроса, на котором указана проблема.

UPDATE:

ЕСЛИ я заменяю свои оповещения просто alert($); Я получаю этот результат для оповещения A:

function (selector, context) {
    return new jQuery.fn.init(selector, context, rootjQuery);
}

и этот для предупреждения B:

function (a, b) {
    return new d.fn.init(a, b, g);
}

Это не имеет смысла для меня, хотя я, возможно, недостаточно хорошо понимаю, что такое $ ...

ОБНОВЛЕНИЕ 2:

Я могу воспроизвести эту проблему только с помощью Firefox на OS X. На Firefox, работающем под Windows 7, все в порядке.

1 Ответ

4 голосов
/ 28 марта 2012

Я думаю, у вас должна быть надстройка в вашей установке Firefox на OSX, которая портится со страницей;в частности, я думаю, что он загружает сжатую версию jQuery на страницу после загрузки страницы, что странно, но объясняет поведение, которое вы видите.Ваше предупреждение о функции $ ясно показывает, что она меняется с несжатой версии (return new jQuery.fn.init(selector, context, rootjQuery);) на сжатую версию (return new d.fn.init(a, b, g);), и повторная загрузка jQuery заменит $ на совершенно новую версию, что означает jQueryДополнения пользовательского интерфейса будут удалены из него.Например, что-то, загружающее сжатый jQuery после загрузки страницы, соответствует симптомам.

При отсутствии надстройки (или, я полагаю, вредоносной программы), нет никаких причин, по которым $ или $.ui будут переопределены с помощьюстраницу, которую вы опубликовали, и я сейчас попробовал ее на Chrome 17, Firefox 11 и Opera 11 на Linux (Ubuntu 11.10), а также IE9, Firefox 5, Safari 5 и Opera 11 на Windows 7. Все они работают какожидается.

Я бы отключил все надстройки и попробовал бы снова.Если это все еще произойдет, я полностью вытру Firefox с машины и переустановлю с нуля.

...