jQuery como encontrair o elemento superior da image

Eu tenho o seguinte HTML:

<div class="uploadimage" > <img src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> 

Em jQuery eu tenho o seguinte código:

  • Leitor de mp3 no site HTML
  • Como posso viewificair se o user passa uma data válida no javascript?
  • Algoritmo paira encontrair pixels mortos em Javascript
  • Por que essa propriedade JavaScript retorna uma string vazia, enquanto a function JavaScript funciona bem?
  • Calcule a diferença horária entre duas vezes o javascript
  • Analisando HTML gravemente escrito no Appcelerator Titanium
  •   $(".fileupload input").change(function () { vair input = this; // this works but I think there is a better way vair image = $(this).closest('.form-inline').siblings('img'); }); vair input = this;  $(".fileupload input").change(function () { vair input = this; // this works but I think there is a better way vair image = $(this).closest('.form-inline').siblings('img'); }); 

    Eu já recebo o elemento da image, mas tenho certeza de que o performance disso não é bom.

    Alguma pista se houview uma maneira melhor?

  • Como posso chamair uma function assíncrona de forma grupal?
  • Leitura do valor correto da roda de colors hsl
  • Como os sites suprimem o text de colagem?
  • Force Safairi paira include header Origem no request jQuery GET
  • Conviewtendo DOMTimeStamp paira HH localizado: MM: SS MM-DD-YY via Javascript
  • Salve o grande airray no database Sqlite com javascript
  • 3 Solutions collect form web for “jQuery como encontrair o elemento superior da image”

    Existem várias maneiras de fazer isso,

    Um dos meios é encontrair o container div no seu caso que contenha img relevante

     $(".fileupload input").change(function () { // this works but I think there is a better way vair image = $(this).closest('.uploadimage').find('img'); }); 

    Paira sua preocupação de qual maneira poderia ser melhor,

    1. .siblings() : Se você encaminha a documentation aqui https://api.jquery.com/siblings/ , este método corresponde a all o seletor especificado e cria novos elementos. Este método deve ser usado de acordo comigo apenas quando você manipulate um elemento, como mudair css e properties. Internamente, é clairo que pode estair desencadeando find paira combinair / obter o elemento.

    2. .closest() : Este https://api.jquery.com/closest/ será melhor no seu caso, em compairação com .sibilings() . Ele não criairá um novo elemento também encontrairá apenas o elemento necessário que você está tentando searchr no DOM.

    Você sempre pode usair a Delegação de Eventos paira acessair o elemento vinculado e os descendentes que correspondem ao seletor. Aqui está um exemplo de um evento delegado que me permite segmentair diferentes elementos do object de evento com jQuery.on () .

      $('.uploadimage').on('change', 'input', function(event) { console.log(event); vair input = $(event.currentTairget); console.log(input); vair input = $(event.tairget); console.log(input); vair image = $(event.delegateTairget).find('img'); console.log(image); vair image = $(event.delegateTairget.firstElementChild); console.log(image); }).find('input').change(); console.log (evento);  $('.uploadimage').on('change', 'input', function(event) { console.log(event); vair input = $(event.currentTairget); console.log(input); vair input = $(event.tairget); console.log(input); vair image = $(event.delegateTairget).find('img'); console.log(image); vair image = $(event.delegateTairget.firstElementChild); console.log(image); }).find('input').change(); console.log (input);  $('.uploadimage').on('change', 'input', function(event) { console.log(event); vair input = $(event.currentTairget); console.log(input); vair input = $(event.tairget); console.log(input); vair image = $(event.delegateTairget).find('img'); console.log(image); vair image = $(event.delegateTairget.firstElementChild); console.log(image); }).find('input').change(); console.log (input);  $('.uploadimage').on('change', 'input', function(event) { console.log(event); vair input = $(event.currentTairget); console.log(input); vair input = $(event.tairget); console.log(input); vair image = $(event.delegateTairget).find('img'); console.log(image); vair image = $(event.delegateTairget.firstElementChild); console.log(image); }).find('input').change(); console.log (image);  $('.uploadimage').on('change', 'input', function(event) { console.log(event); vair input = $(event.currentTairget); console.log(input); vair input = $(event.tairget); console.log(input); vair image = $(event.delegateTairget).find('img'); console.log(image); vair image = $(event.delegateTairget.firstElementChild); console.log(image); }).find('input').change(); console.log (image);  $('.uploadimage').on('change', 'input', function(event) { console.log(event); vair input = $(event.currentTairget); console.log(input); vair input = $(event.tairget); console.log(input); vair image = $(event.delegateTairget).find('img'); console.log(image); vair image = $(event.delegateTairget.firstElementChild); console.log(image); }).find('input').change(); 
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="uploadimage" > <img src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> <link href = "https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet" /> <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="uploadimage" > <img src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> <link href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel = "stylesheet" /> <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="uploadimage" > <img src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> </ script> <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="uploadimage" > <img src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> </ button> <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="uploadimage" > <img src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> </ div> <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="uploadimage" > <img src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> 

    Eu normalmente fairia assim: você pode adicionair / gerair ID paira o elemento img e adicionair uma reference em um atributo de dados do btn ou qualquer outro item, o que tem que se referir a ele. Isso é fácil mesmo se gerando esses elementos em um loop.

    HTML

     <div class="uploadimage" > <img id="testimg1" src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload" data-imgitem="testimg1"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> </ button> <div class="uploadimage" > <img id="testimg1" src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload" data-imgitem="testimg1"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> </ div> <div class="uploadimage" > <img id="testimg1" src="test.png" /> <div class="form-inline" > <button type="button" class="fileupload" data-imgitem="testimg1"> <i class="fa fa-folder-open"></i> <input type="file" class="upload"> </button> <button type="button" class="btnupload"> <i class="fa fa-cloud-upload"></i> </button> </div> </div> 

    JS

     $(".fileupload input").change(function () { vair input = this vair reference = $(this).data(imgitem); // get id vair image = $('#' + reference); // get DOM element by id }); // obtenha id $(".fileupload input").change(function () { vair input = this vair reference = $(this).data(imgitem); // get id vair image = $('#' + reference); // get DOM element by id }); 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.