【问题标题】:How can I get selected row using jQuery?如何使用 jQuery 获取选定的行?
【发布时间】:2021-01-13 17:51:14
【问题描述】:

这是我的表格tbody 中的表格行。我得到下拉值,文本值,但我无法获得选定的行值。我的行值返回“未定义”。

$(document).on("click", "#skorKartDegerle", function() {
  $("#modal_evaluation").modal("show");
});

$(document).on("click", "#btnKaydet", function() {
  var arrList = [];
  var isEmptyAnswer = false;

  $("#evaluationTable > tbody > tr").each(function() {
    var line = $(this).find(".answerLine").val();
    var ddlVal = $(this).find(".answerddl").val();
    var txtVal = $(this).find(".answertxt").val();

    var obj = '{"line":"' + line + '","ddlVal":"' + ddlVal + '","txtVal":"' + txtVal + '"}';
    arrList.push(obj);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr class="answerLine" value="2">
      <td>FR002</td>
      <td>Koton Mağazacılık</td>
      <td>1800</td>
      <td>A</td>
      <td>Kabul</td>
      <td class="select" value="0">
        <select class="answerddl">
          <option value="1">Kabul</option>
          <option value="2">Ret</option>
        </select>
      </td>
      <td><input type="text" class="answertxt"></td>
    </tr>
  </tbody>
</table>

【问题讨论】:

  • 请用工具&lt;&gt;创建一个完整的工作sn-p
  • 显示你的jsp代码

标签: javascript html jquery css html-table


【解决方案1】:

部分问题是因为tr 元素没有value 属性。要执行您需要的操作,您可以改用 data 属性,将自定义元数据存储在元素上。另一部分是this 是对tr 元素的引用。然后,您在要定位的元素上调用 find(),因此不会找到它,因为该方法仅查找后代。

另外值得注意的是,您可以通过使用map() 构建数组而不是使用each() 显式循环来使逻辑更简洁,并且最好将对象存储在数组中并且仅存储JSON在通过 AJAX 传输之前对其进行编码。

$(document).on("click", "#btnKaydet", function() {
  var isEmptyAnswer = false;

  let arrList = $("#evaluationTable > tbody > tr").map((i, tr) => {
    let $tr = $(tr);
    return {
      line: $tr.data('value'),
      ddlVal: $tr.find(".answerddl").val(),
      txtVal: $tr.find(".answertxt").val()
    }
  }).get();
  
  console.log(arrList);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="evaluationTable">
  <tbody>
    <tr class="answerLine" data-value="2">
      <td>FR002</td>
      <td>Koton Mağazacılık</td>
      <td>1800</td>
      <td>A</td>
      <td>Kabul</td>
      <td class="select" value="0">
        <select class="answerddl">
          <option value="1">Kabul</option>
          <option value="2">Ret</option>
        </select>
      </td>
      <td><input type="text" class="answertxt"></td>
    </tr>
  </tbody>
</table>

<button id="btnKaydet">Click me</button>

【讨论】:

  • 我已经改变了,但我仍然得到 row as "undefined"
  • 使其成为可运行的 sn-p 或使用 jsfiddle.net
  • @FSDford 和 Rory,当我在您的代码下方使用运行代码 sn-p 时,您会看到行仍未定义。
  • 谢谢它可以工作,但在我的 ide 中不起作用。可以和我分享聊天链接吗?如果你检查我的代码会更好
  • 请将您的完整代码添加到问题中。另外,检查控制台是否有错误
猜你喜欢
  • 1970-01-01
  • 2010-11-26
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多