Ближайший и найти неработающий jquery

У меня есть вкладка Bootstrap и таблица внутри вкладки и в таблице, строка с полями ввода. Проблема, с которой я сталкиваюсь, заключается в том, что когда у меня есть несколько строк в таблице, извлекаются только значения первой строки. Я использую «шкаф» и «найти», но не получаю желаемых значений. Что я делаю неправильно?

<ul class = "nav nav-tabs nav-justified itemTab">
<li><a href = "#tab5" data-toggle = "tab">Inbox</a></li> 
<li><a href = "#tab6" data-toggle = "tab">Outbox</a></li>
</ul>
<div class = "tab-content itemTab">
<div class = "tab-pane fade in" id = "tab5">
    <table class = "table table-condensed" id = "utable">
        <th>Location</th>
        <th>Department</th>
        <th>HD Number</th>
    @foreach (var item in Model.items)
    {
        <tr class = "@item.Id">
        <div class = "accordian-body collapse in" id = "@item.Id">
            <input type = "text" class = "form-control" id = "loc">
            <input type = "text" class = "form-control" id = "dept">
            <input type = "text" class = "form-control" id = "hdnum">
        </div>
         <div class = "row">
            <div align = "center">
            <input type = "submit" value = "Transfer" class = "btn btn-success" onclick = "MoveItem(@item.Id)" id = "moveButton" data-url = "@Url.Action("Submit", "Item")" />
            </div>
        </div>
        </tr>
    }
    </table>
    </div>
    <div class = "tab-pane fade in" id = "tab6">
    @Html.Action("Outbox", "Item") 
    </div>


   function MoveItem(id) {
   var row = $('#' + id).closest('.itemTab');
   var loc = $(row).find('#loc').val();
   var dept = $(row).find('#dept').val();
   var hdnum = $(row).find('#hdnum').val();
   }

во-первых, у вас не может быть <div /> в качестве дочернего элемента <tr />

Napoli 12.03.2018 19:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
32
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Во-первых, заключите значение id в кавычки при генерации параметра для вызова MoveItem:

onclick = "MoveItem('@item.Id')"

Во-вторых, измените повторяющиеся идентификаторы на классы и поднимитесь только до родительского tr:

<input type = "text" class = "form-control" class = "loc">

function MoveItem(id) {
  var row = $('#' + id).closest('tr');
  var loc = $(row).find('.loc').val();
}

Здесь нет повторяющихся идентификаторов, они основаны на модели (нет указаний на то, что это фактические значения), поэтому их не нужно удалять.

freedomn-m 12.03.2018 19:09

Ваш самый близкий

var row = $('#' + id).closest('.itemTab');

получает вкладку - но все «строки» находятся на этой вкладке.

Вместо этого получите "строку"

var row = $('#' + id).closest('tr'); 

тогда находки найдут предмет в соответствующей строке.

Другие вопросы по теме