Перевести код с 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 документе работает на отлично! Подскажите, пожалуйста, что можно изменить в данном коде? вызов функций поменять на что-то другое или есть другие пути, чтобы избежать конфликтов трех библиотек? |
все, отбой! нашел решение на jquery :victory:
ui-tabs называется;) |
Блин ну нафига захламлять сеть такими сайтами где и jQuery и MooTools и Prorotype и ExtJS в придачу юзеру навесят?!
|
Часовой пояс GMT +3, время: 10:27. |