2016-11-04 3 views
1

поэтому у меня есть этот код html и код jquery. И когда я нажимаю кнопку «produkter» tablerows с именем класса «fa-products», я хочу найти скрытый ввод поля, который находится на том же tablerow, что и кнопка, которую вы нажимаете (каждый tablerow имеет скрытый ввод поля и «кнопка« продюсер »). Затем я хочу сохранить значение скрытого поля в переменной, которую все могут мне помочь? когда i "console.log (discountId);" она откликается undefiend«ближайший()» метод в jquery не работает

<div class="eastSide row top-buffer col-xs-8" style="overflow:scroll; height:250px;"> 

    <table style="width:100%"> 
     <tr> 
      <th>Code</th> 
      <th>Aktiv</th> 
      <th>Skapad</th> 
      <th></th> 
     </tr> 
     @foreach (var discount in Model.DiscountList) 
     { 

      <tr> 

       <td><input name="codeTextBox" id="codeTextBox" value="@discount.Code" maxlength="18" /></td> 

       <td><input type="checkbox" id="activeCheckBox" name="activeCheckBox" checked="@discount.Active" /></td> 
       <td><input type="datetime" value="@discount.CreatedDate" readonly /></td> 
       <td> 
        <input type="button" value="Radera" class="fa fa-remove" data-url="@Url.Action("DeleteDiscountCode","Discount",new { id= discount.Id})" /> 
        <input type="button" value="Uppdatera" class="fa fa-update" data-url="@Url.Action("UpdateDiscount","Discount")" /> 
        <input type="button" value="Produkter" class="fa fa-products" id="@discount.Id" data-url="@Url.Action("chooseProductsForDiscountCode","Discount")" /> 
       </td> 
       <td><input id="id" type="hidden" value="@discount.Id" /></td> 
      </tr> 
     } 
    </table> 


</div> 



<script> 
$(".fa-products").on("click", function (e) { 


       var discountId =  $(event.target).closest('input[type="hidden"]').val(); 
       console.log(discountId); 





      }); 
</script> 
+0

когда я console.log (discountId) , он отвечает undefiend @Teemu –

+0

[Документы для ближайших говорит] (http://api.jquery.com/closest/): «_... получить первый элемент, который соответствует селектору, путем тестирования самого элемента и прохождения через своих предков ... », ваш« скрытый »не находится на пути вверх. – Teemu

ответ

4

Он не будет работать, потому что скрытый ввод не является родителем зарегистрированного элемента.

Возможно, это решит проблему: $(event.target).closest('tr').find('input[type="hidden"]').val();

+2

Это должен быть комментарий, а не ответ – Dekel

+0

Вы правы, я отредактировал ответ – ltamajs

+0

Теперь это лучше :) – Dekel

0

Вы должны сделать поиск для общего родительского элемента с помощью closest, а затем найти input внутри результата:

$(".fa-products").on("click", function (e) { 
    var discountId = $(event.target).closest('tr').find('input[type="hidden"]').val(); 
    console.log(discountId); 
}); 
Смежные вопросы