首页 > 解决方案 > 当它们都具有相同的类名时如何选择特定文本字段的值

问题描述

我有一个使用 PHP(Laravel)中的 foreach 生成的表。该表有 3 列:“名称”、“注释”和“停用”。Deactivate 是一个带有选项的选择,“Activate”和“Inactive”。“Name”列由带有 .“Deactivate”选项的文本输入字段组成class=name。“Deactivate”选项具有edit_cat.

<tr>
   <td>{{ Form::text("category_name[]",$category->name,['class'=>'name',])}}</td>
   <td>{{ Form::text("notes[]",$category->notes)}}</td>
   <td>{{ Form::select("category_value[]",['active'=>'Active' ,'inactive' => 'Inactive'],$category->status,['class'=>'edit_cat'])}}</td>
</tr> 

当我从第 3 列“停用”中选择一个选项时,我的 JQuery 还需要获取第一列中“category_name”的文本值。

我已经尝试了所有可以在 JQuery API 和 SO 中找到的东西。我已经使用了closestand findinput:text .nameORtd.name或其他十几种排列方式。但我只undefined返回,或者一个错误。

 $(".edit_cat").on("change", function () {
       var value =  $(this).closest(".name-input").val();
       console.log(value);
    });

我究竟做错了什么?非常感谢 !

标签: phpjqueryjquery-traversing

解决方案


var value = $(this).closest("tr").find("td .name").val();

你几乎明白了,伙计。

  1. 使用最接近找到其最近的父级,因为输入只是一个兄弟。
  2. 您需要做最近的父母,tr然后找到特定的输入。

最接近()

描述:对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先来获取与选择器匹配的第一个元素。


推荐阅读