Quero obter o valor do elemento de entrada filho da 4ª div. Basicamente, estou recebendo o valor verificado do chekbox e gostaria de adicionar o valor associado da caixa de entrada usando a palavra-chave "this" Aqui está o meu código html
<div class="container">
<div class="cell-checkbox" style="float:left;margin-right:5%;">
<input type="checkbox" name="select" value="7" class="big">
</div>
<div class="cell-desc" style="float:left;margin-right:5%;width:30%;">
<!-- Content -->
</div>
<div class="cell-cart"> //input box is inside this div
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td align="right">
<table align="center" class="cellBuy">
<tbody>
<tr align="right">
<td width="1%">
<input type="hidden" name="buyid" id="buyid" value="7">
<input type="hidden" name="category" value="464">
<input type="hidden" name="itemid" value="">
<input name="qty" id="qty" size="6" maxlength="6" value="1" class="input"> /*want to get this input text value
</td>
<td height="20">
<div align="left">
<input type="button" class="btn-BuyOff" value="Buy" id="addtocart" name="addtocart">
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</div>
Eu tentei o código abaixo mencionado, mas não está funcionando
var result = [];
$(":checkbox:checked").each(function (i) {
result.push($(this).val() + "," + $(this).parent().next().find("#qty").val());// this is for finding quantity field value
});
var strreuslt = result.join(";");
alert(strreuslt);
Respostas:
2 para resposta № 1Tente usar o mais próximo para obter o pai mais próximo que contém as duas entradas e depois acionar a localização
$(":checkbox:checked").each(function (i) {
result.push($(this).val() + "," + $(this).closest(".container").find("input[name="qty"]").val());
});
ou:
$(":checkbox:checked").each(function (i) {
result.push($(this).val() + "," + $(this).parent().siblings(".cell-cart").find("input[name="qty"]").val());
});
Nota: se você tiver vários grupos de entradas, precisará envolver cada grupo em um elemento dom, de preferência ul li
2 para resposta № 2
$(":checkbox").eq(3)
Isso fornece o quarto elemento no jquery. A indexação começa do zero, então .eq (3) dará o quarto filho.
1 para resposta № 3
Usar name
em vez disso, e nunca use o mesmo id
para vários elementos:
$(this).parent().siblings(".cell-cart").find("[name=qty]").val();
Ou use isto se o contêiner contiver vários <div class="cell-cart">
:
$(this).parent().next().next().find("[name=qty]").val();
1 para resposta № 4
Você tem problemas com a travessia de dom. $(this).parent()
não retorna div com elemento de caixa de seleção de entrada nele. Você deve preferir atravessar para o div mais próximo com o contêiner de classe e, em seguida, encontrar a caixa de seleção de entrada nele. Como isso:
var result = [];
$(":checkbox:checked").each(function (i) {
result.push($(this).val() + "," + $(this).closest(".container").find("[name="qty"]").val());// this is for finding quantity field value
});
var strreuslt = result.join(";");
alert(strreuslt);