Autor Zpráva
mersi
Profil
Zdravím všetkých, riešim trochu atypickú slideshow a stretol som sa s takýmto problémom. Pomocou clone() nemôžem získat kópiu elementu. Nerozumiem tomuto chovaniu. Nemáte predstavy, prečo to funkcia nevráti klon elementu? V skripte robím kópiu rovnako viac krát a funguje to. Mám podozrenie, že to nefunguje len u <img> elementov.

Ak si dám do konzoly vypísať obsah z:

$(previousSlide($carousel, index).element).find('.main-image')

dostanem (normálne objekt s elementom):

[<img src="assets/img/foto3.png" alt class="main-image">]

Ak spravím kópiu:

$(previousSlide($carousel, index).element).find('.main-image').clone()

Dostanem prázdny objekt:

[]

Neviete čo to môže spôsobovať. Kde robím chybu. Klonovanie o pár riadkov vyššie šlape bez problémov. Akurát tam kopírujem aj event handlery.

<div class="carousel">
  <div class="slides">
    <div class="slide"><div class="image"><a href="#"><img src="assets/img/photo1.png" alt="" class="main-image"></a></div></div>
    <div class="slide"><div class="image"><a href="#"><img src="assets/img/photo2.png" alt="" class="main-image"></a></div></div>
    <div class="slide"><div class="image"><a href="#"><img src="assets/img/photo3.png" alt="" class="main-image"></a></div></div>
  </div>
</div>
$('.slides').each(function() {

  var $carousel = $(this);
  
  $carousel.css({
    "position": "relatives"
  });
 
  $carousel.prop('index', 0);
  $carousel.find('.slide:gt(0)').hide();
  $carousel.prepend($controlsDiv.clone(true)); // pripoji do slideshow v skripte (na inom mieste) vytvorene talcidla, tu clone funguje bezproblemov na objekt s elementom 

  $carousel.find('.main-image').each(function(index){ // pre obrazok kazdeho slidu
    var $prevImage = $(previousSlide($carousel, index).element).find('.main-image').clone(); // mal by vytvorit kopiu z obrazku predosleho slidu
    console.log($prevImage);
  });
  
});

// vrati predosly slide
function previousSlide( $carousel, index ) {
  var $slides = $carousel.find('.slide');
  if (index-1 >= 0) {
    return {"index":index-1, "element":$slides.eq(index-1)};
  } 
  return {"index":$slides.size()-1, "element":$slides.eq(-1)};
}
mersi
Profil
tu je ten skript nahodeny, pre ukazku
joe
Profil
Je tam chyba hned po spuštění - "Uncaught ReferenceError: $previousAnchor is not defined "
mersi
Profil
odkomentoval som to, to s nesúvisí s problémom

ide mi len o to, preco sa nespravi kopia <img> cez clone()

Moderátor Chamurappi: Proč sis zamknul? Odemykám.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: