jQuery标签具有按属性过滤并获取当前索引

时间:2019-03-05 02:48:08

标签: jquery html

我有一张桌子:

<table>
    <tr code="01"> <td><input type="text" name="A"/></td></tr>
    <tr code="02"> <td><input type="text" name="B"/></td></tr>
    <tr code="03"> <td><input type="text" name="C"/></td></tr>
    <tr code="01"> <td><input type="text" name="D"/> </td></tr>
    <tr code="01"> <td><input type="text" name="E"/></td></tr>
</table>

输入E时,我需要用代码=“ 01”过滤tr并获取E的索引(结果为2)

该怎么做?

2 个答案:

答案 0 :(得分:2)

  1. 使用.closest()获取父亲tr
  2. 使用.attr()获取code的值
  3. 先获取父表,然后再使用attribute equals selector使用具有相同tr的{​​{1}}元素来获取匹配的行。
  4. 使用.index()
  5. 获取索引

示例:

code
$("input[type='text']").change(function() {

  var $parent = $(this).closest("tr");
  var code = $parent.attr("code");
  var $codeRows = $(this).closest("table").find("tr[code='" + code + "']");
  var index = $codeRows.index($parent);

  console.log(index);
});

答案 1 :(得分:1)

您可以使用以下代码来检测input tr代码是否在同一棵树中:

function check (val){
var el=$('tr').find("[name="+val+"]").parent().parent();
var code= el.attr("code");
  if(el.is( "[code~="+code+"]")){
    var elements=$('tr').filter(function(){
      return $(this).is( "[code~="+code+"]" );
    });
    console.log(elements.index(el)); 
  }
}


$("input[type='text']").on("input", function() {
  if($(this).val().length > 0){
   check(($(this).val())); 
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
    <tr code="01"> <td><input type="text" name="A"/></td></tr>
    <tr code="02"> <td><input type="text" name="B"/></td></tr>
    <tr code="03"> <td><input type="text" name="C"/></td></tr>
    <tr code="01"> <td><input type="text" name="D"/> </td></tr>
    <tr code="01"> <td><input type="text" name="E"/></td></tr>
</table>

说明:

function check (val){
var el=$('tr').find("[name="+val+"]").parent().parent();
var code= el.attr("code");
  if(el.is( "[code~="+code+"]")){
    var elements=$('tr').filter(function(){
      return $(this).is( "[code~="+code+"]" );
    });
    console.log(elements.index(el)); 
  }
}

用于检测输入的值是否在同一code属性树中。如果是这种情况,请过滤该代码中的所有元素并获取索引。

$("input[type='text']").on("input", function() {
   if($(this).val().length > 0){
    check(($(this).val())); 
   }
});

用于检测input textbox上的输入。如果有任何输入,则将触发上面的功能。

相关资源:

  • .find():获取当前匹配元素集中每个元素的后代,并通过选择器,jQuery对象或元素进行过滤。
  • .parent():获取当前匹配元素集中每个元素的父元素,可以选择使用选择器进行过滤。 (父母( Grandpa )的双重平均父母)
  • .filter():将匹配元素的集合简化为与选择器匹配或通过功能测试的元素。
  • .attr():获取匹配元素集中第一个元素的属性值,或为每个匹配元素设置一个或多个属性。
  • .is():针对选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定参数匹配,则返回 true
  • .index():从匹配的元素中搜索给定的元素。