Autor Zpráva
orel
Profil *
Soubory nahrává vše v pořádku, při zobrazení náhledu mi to zobrazí vše jak má + pod náhledem se vytvoři button .drop-button s odkazem na obrázek.
Ve scriptu mám další zavolání po kliknutí na .drop-button, aby se provedla další akce.
Ta se ale stane a provede vše jak má pouze tehdy, pokud jsou obrázky i s odkazy .drop-button zobrazené po načtení stránky.
Pokud je nahraji, zobrazí se a poté teprve kliknu na .drop-button (u aktuálně nahraného) tak mě to prostě po kliknití hodí na odkaz, místo aby se provedla akce.

Nevím jak toto vyřešit. poradí někdo ? Níže zasílám proces, při kterém funguje upload a dále akci po stisknutí odkazu..

$(document).ready(function()
{

$('a.drop-button').click(function(){
  
      var link_to_drop = $(this).attr('href'); 
      var element   =  $(this);
      
      $.post("/delete_image.php?type=new&om=deleted&link="+link_to_drop,{     }, function(data, status){ 
        element.parent().next('.deleted_image').show(); 
      }); 
                               
     return false;
    
});


var settings = {

    url: "/upload.php",
    method: "POST",
  
  onSubmit: function(data,files){
    $(".submit_div").html("<div class='loading'> <img src='/theme/images/loading.gif'> Vydržte, nahrávám soubory... </div>");
    count_files=0;
  },
  
    onSuccess:function(files,data,xhr)
    { 
    var image = $(".upload-statusbar").find('img#upload_'+count_files);
    image.fadeOut('slow', function () {
        image.attr('src', "/added-image/"+data);
        image.fadeIn('slow');
    });
    
    $(image).after('<a class="drop-button" href="/add/deletefile/'+data+'" style="float:left; margin-top:5px;margin-left:10px;">Odebrat</a>');
    $(".upload-statusbar").find('img#upload_'+count_files).removeAttr( "id" );
   
    count_files++;
        
    }
 ....


}
Keeehi
Profil
To je jasné. Je to kvůli tomu, že v době, kdy se volá ten kód začínající na řádku 4 ten nový button ještě neexistuje. Řešením je si tu událost přiřadit ručně.
var element = ... // vytvoření elementu
element.click(function ... // přiřazení události
$(image).after(element);

Nebo v dřívějších verzích se místo .click(function) dalo použít .live('click', function). Tato funkce pak zajistila, že se události navázaly i na nově vytvořené prvky. Od 1.7 je však deprecated a od 1.9 odstraněná. Podle manuálu by měla být náhradou funkce .on(). Jestli to však funguje i na nově vytvořené elementy nevím. Můžete to zkusit a pak dát vědět.

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:

0