当它们都具有相同的 class 名称时,如何 select 特定文本字段的值

How to select the value of a specific text field when they all have the same class name

我有一个 table,它是使用 PHP (Laravel) 中的 foreach 生成的。 table 有 3 列:"Name"、"Notes" 和 "Deactivate"。 Deactivate 是一个带有选项 "Activate and "Inactive 的 select。"Name" 列由带有 class=name 的文本输入字段组成。"Deactivate" 选项有一个class 个 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> 

当我 select 第 3 列中的一个选项时,"deactivate",我的 JQuery 还需要获取第一列中 "category_name" 的文本值。

我已经尝试了在 JQuery API 和这里的 SO 中可以找到的所有内容。我使用了 closestfind,与 input:text .nametd.name 或其他十几个 permutations.But 我只得到 undefined 返回,或错误.

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

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

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

伙计,你快搞定了。

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

closest()

Description: For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.