Javascript.RU

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

Перевести код с prototype в jquery
Здравствуйте!
Появилась проблема совместимости данных фреймворков.
Дело в том, что в джумле по умолчанию используется mootools. Я в некоторых местах использую jquery (с включенным noConflict). Код на jquery работает прекрасно.
Но появилась необходимость использовать следующий скрипт, который написан (до кучи) на prototype:

window.t1PodObj=null;
window.nbaHomepage=function(){};


function nbaHomepageT1Init(){
	t1PodObj=new nbaHomepage.t1PodNav("nbaT1PodNav","nbaT1PC");
	t1PodObj.setT1Timer(4000);
	t1PodObj.startRotation();
}

nbaHomepage.t1PodNav=

function(t1ThumbContainer,t1ContPrefix){
	var nbaT1PodNav=$(t1ThumbContainer);
	var nbaT1ContPrefix=t1ContPrefix;
	var nbaT1Timeout=7000;
	var navArry=[];
	var lastPosition=0;
	var t1PodTimer=null;
	var isErr=false;
	this.startRotation=_startRotation;
	this.doRotate=_doRotate;
	this.stopRotate=_stopRotate;
	this.doThumbOver=_doThumbOver;
	this.showHideT1=_showHideT1;
	this.setT1Timer=_setT1Timer;
	
	function _startRotation(){
		try{
			navArry=nbaT1PodNav.getElementsBySelector('li');
			_getOverlayDiv(navArry[lastPosition]).addClassName("nbaSpanOverlay");
			_setMouseOverEvents();
			_doRotate();
		}
		catch(eRR){}
	}

	function _setT1Timer(timeVal){
		nbaT1Timeout=timeVal
	}

	function _setMouseOverEvents(){
		for(var i=0;i<navArry.length;i++){
			try{
				var iElement=nbaT1ContPrefix+i;
				navArry[i].observe('mouseover',_thumbHandler.bindAsEventListener(Event,true,i));
				navArry[i].observe('mouseout',_thumbHandler.bindAsEventListener(Event,false,i));
				$(iElement).observe('mouseover',function(e){_stopRotate();});
				$(iElement).observe('mouseout',function(e){_doRotate();});
			}
			catch(_eRR){
				isErr=true;alert("setMouseOverEvents(): Content element with ID [ "+iElement+"] was not found in the DOM");
				break;
			}
		}
	}
	
	function _thumbHandler(e){
		var argArry=$A(arguments);
		argArry.shift();
		if(argArry[0]){
			_doThumbOver(argArry[1])
		}else{
			_doRotate();
		}
	}
	
	function _doRotate(){
		if(!isErr){
			t1PodTimer=setTimeout(
				function(){
					_showHideT1()
				}
			,nbaT1Timeout);
		}
	}
	
	function _stopRotate(){
		clearTimeout(t1PodTimer);
		t1PodTimer=null;
	}
	
	function _doThumbOver(thumbId){
		_stopRotate();
		try{
			$(nbaT1ContPrefix+lastPosition).hide();
			_getOverlayDiv(navArry[lastPosition]).removeClassName("nbaSpanOverlay");
			$(nbaT1ContPrefix+thumbId).show();
			_getOverlayDiv(navArry[thumbId]).addClassName("nbaSpanOverlay");
			lastPosition=thumbId;
		}
		catch(_eRR){
			alert("doThumbOver(): Content element with ID [ "+(nbaT1ContPrefix+lastPosition)+"] or [ "+(nbaT1ContPrefix+thumbId)+"] was not found in the DOM");
		}
	}
	
	function _showHideT1(){
		var nextPosition=((lastPosition+1)>navArry.length-1)?0:(lastPosition+1);
		var currContent=nbaT1ContPrefix+lastPosition;
		var nextContent=nbaT1ContPrefix+nextPosition;
		try{
			_getOverlayDiv(navArry[lastPosition]).removeClassName("nbaSpanOverlay");
			_getOverlayDiv(navArry[nextPosition]).addClassName("nbaSpanOverlay");
			$(currContent).hide();
			$(nextContent).show();
			_doRotate();
		}
		catch(_eRR){
			isErr=true;s
			alert("t1PodNav._showHideT1(): Content element with ID [ "+currContent+"] or [ "+nextContent+"] was not found in the DOM");
		}
		lastPosition=nextPosition;
	}
	
	function _getOverlayDiv(liElement){
		var liFirstChild=liElement.firstDescendant();
		var liFirstChildDivs=liFirstChild.getElementsBySelector('div')
		return liFirstChildDivs[0];
	}
}


в <body> прописан :
onload="nbaHomepageT1Init();"


И весь этот код из под джумлы не работает, хотя в отдельном html документе работает на отлично!
Подскажите, пожалуйста, что можно изменить в данном коде? вызов функций поменять на что-то другое или есть другие пути, чтобы избежать конфликтов трех библиотек?
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2010, 13:31
Новичок на форуме
Отправить личное сообщение для alexey_samara Посмотреть профиль Найти все сообщения от alexey_samara
 
Регистрация: 20.11.2010
Сообщений: 8

все, отбой! нашел решение на jquery
ui-tabs называется
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2010, 16:52
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Блин ну нафига захламлять сеть такими сайтами где и jQuery и MooTools и Prorotype и ExtJS в придачу юзеру навесят?!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамически загружаемая jQuery и jQuery-функции в одном файле 67bytes Общие вопросы Javascript 6 06.03.2013 08:01
Prototype в jQuery spacemonkey Библиотеки/Тулкиты/Фреймворки 0 06.12.2010 12:45
Не могу объединить две галереи на Prototype и jQuery volodumir Ваши сайты и скрипты 5 17.08.2010 14:10
prototype + jquery + non conflict - отказало return false Amateur Библиотеки/Тулкиты/Фреймворки 2 20.03.2010 09:49
На много ли код jQuery медленнее чистого javascript format1981 jQuery 8 06.11.2009 10:42