javascript - 从当前点击的td和当前行的第一个td获取隐藏字段

标签 javascript jquery html html-table hidden

考虑一个场景

我有一个表,有 8 列,每列都有一定数量的隐藏字段 - 假设有 5 个隐藏字段。

我想要实现的是当我单击特定单元格时获取所有隐藏字段的值,并且我还希望从[单元格]当前单击的行的第一个 td 中获取隐藏值

取得的成就

我能够获取当前单击的行单元格的第一个子单元格的隐藏字段值,如下所示

element.closest("tr").find("td:first").find("input:hidden")

这将导致 3,因为第一个单元格始终有 3 个输入。

我被困的地方:

我正在获取第一个单元格的隐藏输入值,但无法获取当前单击单元格的隐藏输入值。

这是示例 HTML

<table>
   <tr>
      <td style="width: 50px;">4th Class( A ) 
         <input id="SectionID" name="SectionID" type="hidden" value="7">
         <input id="SectionDetailID" name="SectionDetailID" type="hidden" value="1">
         <input id="SectionName" name="SectionName" type="hidden" value="4th Class( A ) ">
      </td>
      <td class="cells" onclick="fetchData(this);">
         <div>
            <div class="dataRow">
               <div class="cellLabel">Name:</div>
               <div class="cellValue">P D S</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">Sub:</div>
               <div class="cellValue">Hindi</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">Period:</div>
               <div class="cellValue">Period 2</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">From:</div>
               <div class="cellValue">11:00</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">To:</div>
               <div class="cellValue">12:00</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">Year:</div>
               <div class="cellValue">2014</div>
            </div>
         </div>
         <input id="TimeTableDtlID" name="TimeTableDtlID" type="hidden" value="1">
         <input id="TimeTableHdrID" name="TimeTableHdrID" type="hidden" value="7">
         <input id="PeriodID" name="PeriodID" type="hidden" value="38">
         <input id="PeriodName" name="PeriodName" type="hidden" value="Period 2">
         <input id="PeriodFromTime" name="PeriodFromTime" type="hidden" value="11:00">
         <input id="PeriodToTime" name="PeriodToTime" type="hidden" value="12:00">
         <input id="TTYear" name="TTYear" type="hidden" value="2014">
         <input id="SubjectName" name="SubjectName" type="hidden" value="Hindi">
      </td>
      <td class="cells" onclick="fetchData(this);">
         <div>
            <div class="dataRow">
               <div class="cellLabel">Name:</div>
               <div class="cellValue">J P Pl</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">Sub:</div>
               <div class="cellValue">English</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">Period:</div>
               <div class="cellValue">Period 2</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">From:</div>
               <div class="cellValue">11:00</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">To:</div>
               <div class="cellValue">12:00</div>
            </div>
            <div class="dataRow">
               <div class="cellLabel">Year:</div>
               <div class="cellValue">2014</div>
            </div>
         </div>
         <input id="TimeTableDtlID" name="TimeTableDtlID" type="hidden" value="3">
         <input id="TimeTableHdrID" name="TimeTableHdrID" type="hidden" value="7">
         <input id="PeriodID" name="PeriodID" type="hidden" value="38">
         <input id="PeriodName" name="PeriodName" type="hidden" value="Period 2">
         <input id="PeriodFromTime" name="PeriodFromTime" type="hidden" value="11:00">
         <input id="PeriodToTime" name="PeriodToTime" type="hidden" value="12:00">
         <input id="TTYear" name="TTYear" type="hidden" value="2014">
         <input id="SubjectName" name="SubjectName" type="hidden" value="English">
      </td>
   </tr>
   </tbody>
</table>

jQuery

function fetchData(element) {
   var $element = $(element);
   var objHidden = [];
   console.log($element.closest("tr").find('td:first').andSelf().find("input:hidden").length); // Returns 19 Where it must be 11
   $element.closest("tr").find('td:first').andSelf().find("input:hidden").each(function (i, elem) {
      objHidden[elem.getAttribute("name")] = elem.value;
   });
   console.log(objHidden); // Getting same values always
}

Fiddle DEMO

编辑

这是一个简单的场景,当我单击单元格意味着 TD 时,除了第一个单元格,我想要当前单击的单元格中的隐藏值以及第一个 TD 中的隐藏值code> 在当前行未被点击的地方。

如何获取当前点击单元格的隐藏字段和最近行第一个td的隐藏字段?

非常感谢任何形式的帮助。

最佳答案

andSelf 和最后一个 jQuery 对象进入当前堆栈。但如果我们仔细看看你的台词:

$element.closest("tr").find('td:first').andSelf().find("input:hidden")

您执行.closest().find().andSelf()。这意味着 andSelf 返回 .closest('tr')

尝试使用add代替:

$element.closest("tr").find('td:first').add($element).find("input:hidden")

或者,您也可以使用它:

$element.siblings(":first").andSelf().find("input:hidden");

关于javascript - 从当前点击的td和当前行的第一个td获取隐藏字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23017015/

相关文章:

PHP数据提交错误

javascript - 使用 JavaScript 获取元素的自定义 css 属性 (-mystyle)

javascript - 为什么<video>绘制到<canvas>时质量会急剧下降?

javascript - 通过 .load() 加载的脚本失败

jquery - 使用 getJSON 的 API 调用不起作用

html - 如何在CSS中创建带有2个菜单栏的布局?

javascript - 为什么此 SVG 中的渐变显示为黑色?

javascript - 当我按下 shift+l 键时如何在 html 中加载锁定屏幕

javascript - CSS 工具提示不显示

html - calc 是否与显示 :table-cell? 一起工作