javascript - Code appended with JQuery does not fire click event on input file -


this question has answer here:

i appending small block of code has inside of image when clicked triggers click event on input file uploading. when page loaded and/or refreshed, there 1 block once changed, fires event append new one.

<div class="add_new_image">     <div class="img">         <div class="file-upload-trigger">             <input type="file" name="imagem[]" class="none file-chooser" required/>             <img class="more" src="/assets/auto/images/add_image.png"/>         </div>     </div> </div> 

the jquery code appending:

$('#novo_anuncio .file-chooser').change(function() {     readurl(this);     $('#novo_anuncio .add_new_image').append(         '<div class="img">\n\             <div class="file-upload-trigger">\n\                 <input type="file" name="imagem[]" class="none file-chooser" required/>\n\                 <img class="more" src="/assets/auto/images/add_image.png"/>\n\             </div>\n\         </div>'); }); 

the problem appended code not trigger click event on input. code identical , appended correctly inside of .add_new_image main tag. wrong?

you need use .on() because when binding "change" listener, new ".file-chooser" doesn't exist. jquery on handles you.

delegated events have advantage can process events descendant elements added document @ later time.

$('body').on('change', '#novo_anuncio .file-chooser', function() {     readurl(this);     $('#novo_anuncio .add_new_image').append(         '<div class="img">\n\             <div class="file-upload-trigger">\n\                 <input type="file" name="imagem[]" class="none file-chooser" required/>\n\                 <img class="more" src="/assets/auto/images/add_image.png"/>\n\             </div>\n\         </div>'); }); 

$('body').on('change', '#novo_anuncio .file-chooser', function() {      alert("change");      $('#novo_anuncio .add_new_image').append(          '<div class="img">\n\              <div class="file-upload-trigger">\n\                  <input type="file" name="imagem[]" class="none file-chooser" required/>\n\                  <img class="more" src="/assets/auto/images/add_image.png"/>\n\              </div>\n\          </div>');  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>  <div id="novo_anuncio">    <div class="add_new_image">      <div class="img">          <div class="file-upload-trigger">              <input type="file" name="imagem[]" class="none file-chooser" required/>              <img class="more" src="/assets/auto/images/add_image.png"/>          </div>      </div>    </div>  </div>


Comments

Popular posts from this blog

sql - VB.NET Operand type clash: date is incompatible with int error -

SVG stroke-linecap doesn't work for circles in Firefox? -

python - TypeError: Scalar value for argument 'color' is not numeric in openCV -