Al hacer clic en el botón, quiero obtener el valor <input name="something/>
más cercano.
$(this).closest(".input").val()
pero no funcionó.
$(document).on("click", ".button", function() { div = `<div class="second-div"><input name="something/></div> <div class="third-div"></div>` // get nearest <input name="something/> value // get nearest <input class="a-input" /> value $(".main-div").append(div); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="main-div"> <div class="second-div"> <input name="something" class="input" /> </div> <div class="third-div"> <input name="another input" class="a-input" /> </div> <div class="fourth-div"> <button type="button" class="button">Click Me</button> </div> </div>
Primero viajaría hasta el div que lo contiene, luego volvería al control deseado.
$(this).closest(".main-div").find(".input");
EDITAR
Acabo de leer tu comentario diciendo que quieres obtener la última instancia de una clase.
$(this).closest(".main-div").find(".input").last();
EJEMPLO
$(document).on("click", ".button", function() { div = `<div class="second-div"><input name="something" class="input"/></div> <div class="third-div"></div>` $(".input").removeClass("highlight"); $(this).closest(".main-div").find(".input").last().addClass("highlight"); // get nearest <input name="something/> value // get nearest <input class="a-input" /> value $(".main-div").append(div); });
.highlight{ background:#b00; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="main-div"> <div class="second-div"> <input name="something" class="input" /> </div> <div class="third-div"> <input name="another input" class="a-input" /> </div> <div class="fourth-div"> <button type="button" class="button">Click Me</button> </div> </div>