Autor | Zpráva | ||
---|---|---|---|
orel Profil * |
#1 · Zasláno: 14. 4. 2015, 16:55:00
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 |
#2 · Zasláno: 14. 4. 2015, 19:03:53
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.
|
||
Časová prodleva: 9 let
|
0