Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.06.2011, 10:54
Новичок на форуме
Отправить личное сообщение для severum Посмотреть профиль Найти все сообщения от severum
 
Регистрация: 16.12.2010
Сообщений: 8

переход на новую версию jQuery
Для совместимости (и избавления от конфликтов) судя по всему приходится переписывать ряд скриптов со старых версий mootools и jQuery на новую версию jQuery. На jQuery не писал и сразу и вообще на JS редко.

В консоле сыпется много ошибок на строчки типа:
$("xxx").style.display = "none";
помогает замена на:
$("#xxx").css("display", "none");

1. Правильно ли я понимаю что в новой версии убрали .style (в скриптах встречается и .style и .css)?
2. Почему раньше видимо работало $("xxx"), а теперь в основном только $("#xxx").
3. местами перестало работать .innerHTML, я заменяю на .html(), почему это может быть?

заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 23.06.2011, 11:20
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от severum
Правильно ли я понимаю
Совсем не понимаешь. Более того, у тебя каша в голове.
Я может чего не знаю о jQuery, но по-моему он всегда возвращал jQuery-наборы, а не дом элементы, и всегда принимал css-селекторы. $("id") - это не jQuery.
Ответить с цитированием
  #3 (permalink)  
Старый 23.06.2011, 11:35
Новичок на форуме
Отправить личное сообщение для severum Посмотреть профиль Найти все сообщения от severum
 
Регистрация: 16.12.2010
Сообщений: 8

спасибо. Понятно. Это значит в скриптах микс. Даже в составе одного скрипта.
Еще в части скриптов в начале стоит jQuery.noConflict(); Я убрал.
заменил jQuery(document).ready( на $("document").ready(
Это что-то меняет?

Последний раз редактировалось severum, 23.06.2011 в 11:38.
Ответить с цитированием
  #4 (permalink)  
Старый 23.06.2011, 12:21
Аватар для SlavaPav
Аспирант
Отправить личное сообщение для SlavaPav Посмотреть профиль Найти все сообщения от SlavaPav
 
Регистрация: 25.02.2010
Сообщений: 57

Да. Функция jQuery принимает либо селектор CSS в виде строки, либо DOM елемент переданный в фунцкию напрямую. В случае $("document"), ты передаешь CSS селектор, и jQuery пытается найти в элемент 'document' ( само собой безуспешно). jQuery.noConfilict() возвращает имени '$' его начальное значение, то есть если ты пользуешься двумя библиотеками, стоит воспользоваться данной функцией для избежания конфликтов. К коллекциям jQuery можно обращаться как к элементам DOM достаточно извлечь единичный элемент из коллекции: jQuery('.someclass')[0].style.display = 'none'
Ответить с цитированием
  #5 (permalink)  
Старый 23.06.2011, 13:01
Новичок на форуме
Отправить личное сообщение для severum Посмотреть профиль Найти все сообщения от severum
 
Регистрация: 16.12.2010
Сообщений: 8

Спасибо. Это я уже усвоил. Пытаюсь пойти по более короткому пути и сохранить большую часть кода.

В начале некоторых файлов содержащих всякие функции стоит jQuery.noConflict();
При этом другие файлы с функциями перестают работать.

Какая область действия этой функции? Может ее стоит запихнуть в каждую конкретную функцию и потом выключать?

Мне кажется, что наличие ее в начале одного из файлов (содержащем только функции вызывающиеся из других файлов) который грузится в некий момент времени в html, вырубает часть скриптов загружаемых позже.

Нельзя же ее вызывать в начале каждого файла где где хочется применить (даже выключая в конце, чего сейчас тоже не делается).
Функции которые потом может кто-то вызвать могут использовать разный $, а состояние его на момент вызова будет неизвестным..
Ответить с цитированием
  #6 (permalink)  
Старый 23.06.2011, 13:06
Новичок на форуме
Отправить личное сообщение для severum Посмотреть профиль Найти все сообщения от severum
 
Регистрация: 16.12.2010
Сообщений: 8

Вернее даже логичнее получается вызвать jQuery.noConflict() сразу после загрузки самого jQuery. Например, дописать в сам файл.
А потом уже детально в зависимости от того, что в каком скрипте используется включать его или нет.
Ответить с цитированием
  #7 (permalink)  
Старый 23.06.2011, 14:36
Новичок на форуме
Отправить личное сообщение для severum Посмотреть профиль Найти все сообщения от severum
 
Регистрация: 16.12.2010
Сообщений: 8

Всем спасибо. Заработало. Сделал так как написал.
1. вначале грузится скрипт mootools,
2. потом jQuery и в нем тут же восстанавливается $.
3. в скриптах где нужен jQuery поставляется jQuery вместо $
Ответить с цитированием
  #8 (permalink)  
Старый 23.06.2011, 14:43
Аватар для SlavaPav
Аспирант
Отправить личное сообщение для SlavaPav Посмотреть профиль Найти все сообщения от SlavaPav
 
Регистрация: 25.02.2010
Сообщений: 57

Ты по прежнему можешь использовать $ вместо jQuery:
(function($) {
    $('.class')
}(jQuery));
Ответить с цитированием
  #9 (permalink)  
Старый 23.06.2011, 14:57
Новичок на форуме
Отправить личное сообщение для severum Посмотреть профиль Найти все сообщения от severum
 
Регистрация: 16.12.2010
Сообщений: 8

ок. спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамически загружаемая jQuery и jQuery-функции в одном файле 67bytes Общие вопросы Javascript 6 06.03.2013 09:01
2 разных модуля на jQuery - как подключить? finder jQuery 4 23.03.2012 22:29
отключить jQuery Awilum jQuery 0 19.11.2010 22:10
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55
JQuery + FireFox NOOB jQuery 4 02.11.2009 18:16