Wątek przeniesiony 2015-12-04 19:07 z PHP przez dzek69.

Konflikt bilbiotek jquery

0

Witam, nie wiedziałem do którego tematu podpiąć post, zdecydowałem się na ten... do rzeczy.

Mam konflikt bibliotek js

<script type="text/javascript" src="./scripts/jquery.min.js"></script>   
<script type="text/javascript" src="./scripts/jquery.bxslider.min.js"></script> 
<script type="text/javascript" src="./scripts/jquery.fancybox.js?v=2.1.5"></script>

<script src="./js/prototype.js" type="text/javascript"></script>
<script src="./js/scriptaculous.js?load=effects" type="text/javascript"></script>
<script src="./js/lightbox.js" type="text/javascript"></script>

<script>
      jQuery(document).ready(function($) {
**$.noConflict();**
        $('.bxtop').bxSlider({            
            captions: false,
            pager: false,
            autoHover:true,
            randomStart:true,
            auto:true
          });
      });

      $(document).ready(function(){
$.noConflict();
        $('.fancybox').fancybox({
          // padding: 0,
          openEffect : 'elastic',
          openSpeed  : 150,
          closeEffect : 'elastic',
          closeSpeed  : 150,
          nextClick : true,
          closeClick : true       
        });
      });            
  </script>
 

Kiedy dodam $.noConflict(); zadziała ale tylko ta biblioteka od lightbox

Z góry dziękuję.

1

Jakie kurde php? Jaki to ma związek z PHP? Jeszcze tag dałeś.

Wrzuć w ogóle post na forum IKEA, bo przecież pisząc go siedzisz na krześle i to ma tyle samo związku ze sprawą co PHP :/


A w temacie. Po co używasz noConflict, skoro nie masz pojęcia do czego służy? jesteś pewien, że w ogóle tego potrzebujesz? Zajrzyj w manual, a potem na forum.

Wywołanie tej metody spowoduje, że funkcja $ NIE JEST już funkcją jQuery. Nie możesz wywoływać funkcji jQuery od momentu użycia noConflict jako $('selektor'), mozesz tylko użyć jQuery('selektor'). Samego noConflict nie powinieneś wrzucać w document ready tylko użyć tego na samym początku i wszystkie wywołania przerobić tak jak opisałem w poprzednim zdaniu.

0
<td><a href="galeria/1.jpg" rel="lightbox"><img class="marginl" src="galeria/1.jpg" align="center" width="220" height="200">


oraz

<div class="animacja">
    <div class="container">

</div>
      <ul class="bxtop">
        <!-- animacja  -->
        <li>
          <div class="slide3"></div>
        </li>
        <li>
          <div class="slide1"></div>
        </li>
        <li>
          <div class="slide2"></div>
        </li>
      </ul>
  </div> 
 

Oraz fragment kodu z pliku css

 

/*---- slajdy w animacji ----*/
.bxtop .slide1{
	background: url(../images/slide1.jpg) no-repeat center top;	
	background-size: cover;	
}
.bxtop .slide2{
	background: url(../images/slide2.jpg) no-repeat center top;
	background-size: cover;	
}
.bxtop .slide3{
	background: url(../images/slide3.jpg) no-repeat center top;
	background-size: cover;	
}



.animacja,
.f-imgs{
	background: url(../images/bg2.jpg);
	padding: 20px 0;
	min-width: 960px;	
}
.animacja .container{
	position: relative;
}
.animacja .container .info{
	position: absolute;
	z-index: 500;
	right: 0;
	top: 120px;
}

.bxtop  li  div{
	height: 300px;	
	border-top: 2px solid rgba(0,0,0,0.1);
	border-bottom: 2px solid rgba(0,0,0,0.1);
}
0

No i po co to wklejasz? I to bez słowa wyjaśnienia?

0

Powtórzę to co napisał @dzek69, tylko trochę spokojniej...

jQuery można wywoływać albo za pomocą $ albo poprzez jQuery, więc wywołując coś z jQuery używaj tej drugiej wersji, a $ zostaw dla prototype...

0

niepotrzebne ci są dwie funkcje jQuery(document).ready(function($) {
możesz dać to w jednej:

jQuery(document).ready(function($) {
     $('.bxtop').bxSlider({            
             captions: false,
             pager: false,
             autoHover:true,
             randomStart:true,
             auto:true
    });

 
    $('.fancybox').fancybox({
          // padding: 0,
          openEffect : 'elastic',
          openSpeed  : 150,
          closeEffect : 'elastic',
          closeSpeed  : 150,
          nextClick : true,
          closeClick : true       
    });
}

ale ponieważ występuje jak mówisz konflikt, to pewnie ci to nie zadziała. W zasadzie nie rozumiem po co używasz bibliotek Prototype i Scriptaculous jeśli korzystasz już z jQuery? Na ch... ci one? (pytam, bo jeśli występują konflikty to najłatwiej można je rozwiązać likwidując ich przyczynę - nadmierną liczbę zależności. Proste jak rozwiązanie węzła gordyjskiego. Wszelkiego rodzaju noConflict to trochę jak przyklejenie plastra na gorączkę. No i używasz tej metody noConflict trochę bezmyślnie, bez próby dowiedzenia się jak ona działa (czytałeś manual?)

Polecam najpierw zobaczyć do konsoli błędów i napisać jaki błąd zwraca (o ile zwraca jakiś), bo bez tego można wróżyć z fusów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1