ugrás a tartalomhoz

jQuery és prototype összeakad

lemmikki · 2010. Jún. 27. (V), 12.38
Sziasztok!

Kaptam most egy weboldalt, hogy szerkesztgessem át, van benne minden finomság, a jquery és a prototype is meg van hívva. Viszont gyönyörűen összeakad a kettő.

Annyit sikerült kigugliznom, hogy ha a $ jelet pl. jQuery-re cserélem, akkor szépen fog futni együtt. Ez a kis egyszerű scriptecskénél működött is, viszont itt egy másik, ami nekem már magas (t.i. nem nagyon értek a javascripthez sajnos).

Lenne itt egy bátor úriember, aki ebben tudna segíteni egy js-hez béna lánykának ezt orvosolni, hogy mit is kellene az alábbi scriptben átírni, hogy ne akadjon össze a prototype-pal?

Előre is köszi!

$slideshow = {
context: false,
tabs: false,
timeout: 7000,      // time before next slide appears (in ms)
slideSpeed: 1000,   // time it takes to slide in each slide (in ms)
tabSpeed: 1000,      // time it takes to slide in each slide (in ms) when clicking through tabs
fx: 'fade',   // the slide effect to use
   
    init: function() {
        // set the context to help speed up selectors/improve performance
        this.context = $('#slideshow');
       
        // set tabs to current hard coded navigation items
        this.tabs = $('ul.slides-nav li', this.context);
       
        // remove hard coded navigation items from DOM
        // because they aren't hooked up to $ cycle
        this.tabs.remove();
       
        // prepare slideshow and $ cycle tabs
        this.prepareSlideshow();
    },
   
    prepareSlideshow: function() {
        // initialise the $ cycle plugin -
        // for information on the options set below go to:
        // http://malsup.com/$/cycle/options.html
        $('div.slides > ul', $slideshow.context).cycle({
            fx: $slideshow.fx,
            timeout: $slideshow.timeout,
            speed: $slideshow.slideSpeed,
            fastOnEvent: $slideshow.tabSpeed,
            pager: $('ul.slides-nav', $slideshow.context),
            pagerAnchorBuilder: $slideshow.prepareTabs,
            before: $slideshow.activateTab,
            pauseOnPagerHover: true,
            pause: true
        });            
    },
   
    prepareTabs: function(i, slide) {
        // return markup from hardcoded tabs for use as $ cycle tabs
        // (attaches necessary $ cycle events to tabs)
        return $slideshow.tabs.eq(i);
    },

    activateTab: function(currentSlide, nextSlide) {
        // get the active tab
        var activeTab = $('a[href="#' + nextSlide.id + '"]', $slideshow.context);
       
        // if there is an active tab
        if(activeTab.length) {
            // remove active styling from all other tabs
            $slideshow.tabs.removeClass('on');
           
            // add active styling to active button
            activeTab.parent().addClass('on');
        }            
    }            
};


$(function() {
    // add a 'js' class to the body
    $('body').addClass('js');
   
    // initialise the slideshow when the DOM is ready
    $slideshow.init();
});
 
1

jQuery.noConflict();

Nutec · 2010. Jún. 27. (V), 13.07
Szia!

Talán a noConflict(); metódus segíteni fog.

Egy bővebb leírást itt találsz a megvalósításhoz (jQuery Cookbook 69.oldaltól):

http://oreilly.com/catalog/9780596159788/preview

Pont benne van a preview-ban :)

Üdv.: Nu7ec
2

Apró módosítások

N0r3i · 2010. Jún. 27. (V), 14.11
Szia!

Nutec-nek is igaza van, de a megoldás elég egyszerűnek látszik:

1. Rögtön a jQuery betöltése után egy <script> blokkban mondd azt, hogy: jQuery.noConflict();

2. Az idézett szkriptben (és minden másikban is, ami jQuery-t használ), cseréld le módszeresen a $( karaktersorozatot jQuery( -re.

További információt itt is találsz: http://docs.jquery.com/Using_jQuery_with_Other_Libraries

Üdv: Norbi
3

Óvatosan a $ jelekkel!

Kevlar · 2010. Jún. 28. (H), 10.13
A dollár jel jQuery-ben lecserélhető mindenhol a 'jQuery' kulcsszóval.
De ebben a kódban a "$slideshow" csupán egy változó név, amiben így a dollárjel felesleges is. Valószínűleg ezt a részt egy php-ban járatosabb ember írta.
Tehát itt is érdemes kivenni a dollárjelet, és a változót talán valami egyedibb névvel ellátni, de ekkor fontos MINDENHOL ezt megtenni a kódban.
4

Javascript változónevek

Ifju · 2010. Jún. 28. (H), 14.13
A $slideshow változónévvel szerintem nincs gond, mert annak köze nincs a $ változóhoz, helyes javascript változónév.
5

Kevlar

Ustak · 2010. Jún. 28. (H), 22.56
Szerintem arra gondolt, hogy a vim ben mondjuk a
:%s%$%jQuery%g
parancs átírja a nem átírandó $-eket is :-)