jQuery в Opera User JS Does не Работа

). Я играю с некоторым Opera User JS. Я включал "1jquery.min.js" в свою папку User JS (1 впереди, потому что Opera загружает их в алфавитном порядке). К сожалению, это, кажется, не работает.

window.onload = OnWindowLoad;

$(document).ready(function()
{
  alert ($('#area_19'));
});

function OnWindowLoad ()
{
  alert ($('#area_19'));
  alert(document.getElementById("area_19"));
}

То, что интересно об этом коде, - то, что первые два предупреждения возвращаются в ПУСТОМ УКАЗАТЕЛЕ, но последний действительно находит объект! Таким образом, элемент определенно существует на странице, но мой jQuery кажется не могущим получить его. То, что является еще более странным, - то, что jQuery "готовые" функциональные работы, указывая, что у меня действительно есть поддержка jQuery.

Я вполне озадачен обо всем этом::-/. Надо надеяться, кто-то может дать мне ключ к разгадке::-).

1
задан Axonn 14 May 2010 в 01:29
поделиться

1 ответ

Я подозреваю, что вы запускаете скрипт на странице, которая использует другой JS фреймворк, возможно Prototype.js.

Если бы Prototype был включен целевой страницей, он бы перезаписал вашу jQuery-копию $ своей собственной, которая получает элемент по ID, а не по селектору. Поскольку элемента с ID #area_19 не существует (# не является допустимым символом в ID), он вернет null. jQuery никогда не вернет null для несуществующего элемента, вы получите только пустой объект-обертку.

(Код $(document).ready() все равно выполнится, потому что $ был вызван до включения Prototype и изменения поведения $.)

Попробуйте использовать явную функцию jQuery, а не ярлык $.

Подобные помехи часто возникают при смешении нескольких фреймворков или даже при смешении двух копий/версий одного и того же фреймворка. Со стороны jQuery взаимодействие может быть уменьшено, но не устранено, с помощью noConflict. Лично для такого кода, как пользовательские скрипты, которым, возможно, придется жить в широком диапазоне контекстов, не контролируемых мной, Я бы избегал использования широкомасштабных фреймворков, таких как jQuery.

2
ответ дан 3 September 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: