В al oop найдите диапазон, который находится на верхнем уровне или дочернем - PullRequest
0 голосов
/ 31 марта 2020

Вот скрипка

Внутри функции цикла я получу html строки, которые имеют элемент span либо на верхнем уровне, либо также могут быть дочерними в пределах div. Как я могу найти это в любом случае?

Я знаю, find ищет только детей. Даже не уверен, как найти его, когда он находится на верхнем уровне, как в data2 ниже? Если бы я это сделал, то, я думаю, я сначала сделал бы find, а если его длина была 0, то произвел бы поиск span на верхнем уровне.

var data1 = "<div class='form-group'><span class='editableColumn'>NAT</span><input type='text' class='editableColumn form-control' style='display:none' name='Lot' value='NAT'></div>";

var data2 = "<span class='editableColumn'>Yes</span><input type='checkbox' name='IsBackorder' class='editableColumn editor-active' style='display:none' checked='checked' value='true'>";
var myStringArray = [data1, data2];
var arrayLength = myStringArray.length;


$(document).ready(function() {
  for (var i = 0; i < arrayLength; i++) {
    console.log(myStringArray[i]);
    //Do something
    var span = $(data1).find("span.editableColumn").text();
    $("#" + i).text(span);
  }

})

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Вы можете использовать .addBack (), чтобы сделать это в одну строку, если хотите.

$(document).ready(function() {
  for (var i = 0; i < arrayLength; i++) {
    var span = $(myStringArray[i]).find("span.editableColumn").addBack("span.editableColumn").text();
    $("#" + i).text(span);
  }
})

http://jsfiddle.net/a21sk6dx/

1 голос
/ 31 марта 2020

Если у вас HTML есть родители, вы можете сделать: $(myStringArray[i]).parent().closest("span.editableColumn").text();

Так как вы этого не сделаете, вам нужно либо обернуть свои данные2 в, либо попробовать найти ближайший:

$(document).ready(function() {
  for (var i = 0; i < arrayLength; i++) {
    console.log();
    //Do something
    var span = $(myStringArray[i]).find("span.editableColumn").text();
    if (!span) span = $(myStringArray[i]).closest("span.editableColumn").text();
    $("#" + (i + 1)).text(span);
  }
})

Кроме того, будьте осторожны: у вас есть i = 0, $("#" + (i + 1))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...