JQuery < tr > тег с фильтром по атрибутам и получить текущий индекс

Нет на данный момент.

Я сомневаюсь, что будущее поддержки ActiveX будет прекращено в ближайшем будущем (как заявила MS).

Look здесь о теге HTML Object, но ничего не будет принято. Вы должны попробовать.

0
задан FixBug 5 March 2019 в 02:48
поделиться

2 ответа

  1. Получить родителя tr с помощью .closest()
  2. Получить значение code с помощью .attr()
  3. [1117 ] Получить совпадающие строки, получив родительскую таблицу, а затем элементы tr, имеющие одинаковые code, используя атрибут , равный селектору .
  4. Получить индекс с помощью .index()

Пример:

$("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);
});
<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>
]

0
ответ дан H77 5 March 2019 в 02:48
поделиться

Вы можете использовать следующий код, чтобы определить, находится ли код 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>
[1138 ]

Объяснение:

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 или элементом. [1 125]
  • .parent() : Получить родительский элемент каждого элемента в текущем наборе совпадающих элементов, который может быть отфильтрован по выбору. (Двойной средний родительский родитель ( Дедушка ))
  • .filter() : Сократить набор соответствующих элементов до тех, которые соответствуют селектору или проходят тест функции .
  • .attr() : Получить значение атрибута для первого элемента в наборе совпадающих элементов или установить один или несколько атрибутов для каждого сопоставленного элемента.
  • .is() : проверить текущий сопоставленный набор элементов по объекту селектора, элемента или jQuery и вернуть true , если хотя бы один из этих элементов соответствует заданному аргументы.
  • .index() : поиск заданного элемента среди соответствующих элементов.
0
ответ дан Mukyuu 5 March 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: