2017-02-10 1 views
-1

Eigene Fotogalerie erstellen Ich wollte ein kleines Bild in ein größeres div hochladen, um es zu vergrößern. Zuerst verwende ich zu html(), aber es löschen Haupt (kleines) Foto, oder tut nichts (ich fand einige wenige Lösung, wie man html() benutzt, ohne Hauptdaten zu trennen, aber nicht von tchem Arbeit). Also habe ich versucht, clone() zu verwenden. Aber dann versuche ich es mit html() zu kombinieren es gibt mir einen Fehler: this.clone ist keine Funktion. Wieder versuche ich eine Lösung zu finden, aber nichts funktioniert. Hier ist mein Code mit Lösungen, die ich habe versucht und Effekte zu verwenden:jquery clone() mit html() ist keine Funktion

<script> 
var GallObj={ 
    img:<?php echo json_encode($GetImg->jsonData); ?>, 
    imgIndex:new Number, //storage data about index of enlaging picture 
} 

var showAllImg = $.map(GallObj.img, function(val, i) { 
    return "<img src='gallery/"+val+"' class='smallimg'>"; 
}); 

$("#gallCont").html(showAllImg.join("")); 

$('.smallimg').click(function(){ 
    GallObj.imgIndex=$('.smallimg').index(this); 

    //it work, but I need change it and use html() because it doesn't change one loaded photo to new loaded photo of course: 
    $(this).clone().appendTo($('#picture')); 

    // this two removed clicked oryginalny picture and I don't want it: 
    $('#picture').html(this) 
    $('#picture').html(this).html(); 

    //this.clone is not a function error: 
    elm=this.clone(); 
    $('#picture').html(elm); 

    //this.clone is not a function error:  
    $('#picture').html(this.clone()); 

    //do nothing: 
    $('#picture').clone().html(this); 

    //do nothing: 
    var value=$(this).html(); 
    $("#picture").html(value); 


    $('#mask, #fixed, #picture, #close').css('display','block'); 
    $('#mask').animate({'width':'100%','height':screen.height +100, opacity:'0.5'}); 
    $('#picture').animate({width:'900'}); 
    $('html, body').animate({scrollTop:0}, 1500); 
}) 
</script> 

Bitte, mir helfen und erklären, was ich falsch gemacht habe ...

+1

Sie haben mehrere Stellen, an denen Sie 'clone()' und 'html()' verwenden. j08691 hat geantwortet, warum Sie den Fehler erhalten, aber ich muss sagen, Ihr Code ist ziemlich verwirrend. Sie sollten 'html()' nicht mit 'this' aufrufen; ['html()'] (http://api.jquery.com/html) soll mit, nun, HTML, als String (oder eine Funktion, aber kein HTML-Element oder ein jQuery-Objekt) aufgerufen werden. –

+0

Ich benutze clone() und html() an mehreren Stellen nur hier, um Lösungen zu zeigen, die ich versucht habe zu verwenden und sie haben nicht funktioniert. Also was soll ich stattdessen in meinem Code verwenden? – FKa

+0

Hängt davon ab, was Sie tun möchten. Wenn Sie den Inhalt von "#picture" durch das Element ersetzen wollen, ['empty()'] (http://api.jquery.com/empty/) gefolgt von ['append'] (http: // api.jquery.com/append/) wäre die beste Wahl. Aber wirklich, sollten Sie sich einige Tutorials zu jQuery ansehen und vielleicht die Dokumentation lesen. –

Antwort

6

In this.clone(), .clone() ist eine Funktion jQuery, aber sie‘ Versuchen Sie es auf this zu verwenden, die JavaScript ist.

Versuchen Sie stattdessen $(this).clone().

+0

Es funktioniert! :-) Danke – FKa