). Я играю с некоторым 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.
Я вполне озадачен обо всем этом::-/. Надо надеяться, кто-то может дать мне ключ к разгадке::-).
Я подозреваю, что вы запускаете скрипт на странице, которая использует другой JS фреймворк, возможно Prototype.js.
Если бы Prototype был включен целевой страницей, он бы перезаписал вашу jQuery-копию $
своей собственной, которая получает элемент по ID, а не по селектору. Поскольку элемента с ID #area_19
не существует (#
не является допустимым символом в ID), он вернет null
. jQuery никогда не вернет null
для несуществующего элемента, вы получите только пустой объект-обертку.
(Код $(document).ready()
все равно выполнится, потому что $
был вызван до включения Prototype и изменения поведения $
.)
Попробуйте использовать явную функцию jQuery
, а не ярлык $
.
Подобные помехи часто возникают при смешении нескольких фреймворков или даже при смешении двух копий/версий одного и того же фреймворка. Со стороны jQuery взаимодействие может быть уменьшено, но не устранено, с помощью noConflict. Лично для такого кода, как пользовательские скрипты, которым, возможно, придется жить в широком диапазоне контекстов, не контролируемых мной, Я бы избегал использования широкомасштабных фреймворков, таких как jQuery.