Проход по идентификатору и массиву jQuery - PullRequest
0 голосов
/ 20 октября 2018

У меня есть страница оформления заказа с некоторыми номерами позиций , которые отображаются на странице.Я получил все номера предметов и поместил их в массив.Каждый элемент на странице имеет идентификатор, который увеличивается на один (# item1, # item2) и класс .item .

Если элемент соответствует номеру элемента в массиве, тогда мне нужно скрыть или удалить ссылку редактирования с классом .edit-item и Сохранить дляПозже ссылка с классом .save .

Я пошел с детьми, чтобы не влиять на другие элементы на странице, но у меня возникли проблемы с кодом ниже.Любой совет, как поступить?Я чувствую, что мог бы подойти к этому неправильно.

var selectors = ["NMF19_N5N5K", "NMF19_N5N5E", "NMF19_N5N5N", "NMF19_N5N5L", "NMF19_N5N5C", "NMF19_N5N5F", "NMF19_N5N5M", "NMF19_N5N5Q", "NMF19_N5N5P", "NMF19_N5N5D"];
    var idNumber = 1;
    var i;

for (i = 0; i < selectors.length-1; i++) {

    if (jQuery('#item' + idNumber)) {
        jQuery('#item' + idNumber + ':contains(' + selectors[i] + ')' ).children()[8].children[0].children[2].children[1].children[0].children[2].remove();
        jQuery('#item' + idNumber + ':contains(' + selectors[i] + ')' ).children()[8].children[0].children[2].children[1].children[3].remove();
        idNumber++;
    }

}

1 Ответ

0 голосов
/ 20 октября 2018

Хотя наличие фактического HTML было бы полезно, описание вместе с кодом дает представление о том, какой может быть структура HTML.Прежде чем предлагать решение, я хотел бы остановиться на нескольких вещах, связанных с jQuery.

  1. $ - это псевдоним jQuery.$ используется в большинстве примеров кода онлайн.
  2. Выражение jQuery(selector) всегда будет правдивым.Чтобы проверить, существует ли элемент, используйте jQuery(selector).length.Выражение приводит к 0, если элемент не существует, в противном случае количество подходящих элементов.

Решение состоит в том, чтобы пройти по всем элементам .item с jQuery.each().Затем используйте Array.some() и String.indexOf, чтобы найти любой из номеров позиций из списка в каждой строке.Если найдено, удалите кнопки редактирования и сохранения действий.

var itemNumbers = ["NMF19_N5N5K", "NMF19_N5N5E", "NMF19_N5N5N", "NMF19_N5N5L", "NMF19_N5N5C", "NMF19_N5N5F", "NMF19_N5N5M", "NMF19_N5N5Q", "NMF19_N5N5P", "NMF19_N5N5D"];

// Loop through all .item elements
$('.item').each(function() {
  // An item reference, Ex: #item1, #item2 ...
  var $item = $(this);
  // The item row as text
  var itemAsText = $item.text();

  // Check if this item row contains an item from the itemsNumbers list 
  var matched = itemNumbers.some(function(itemNumber) {
    return itemAsText.indexOf(itemNumber) > -1;
  });

  if (matched) {
    // Look for the edit and save elements within $item and delete them
    $item.find('.edit-item').remove();
    $item.find('.save').remove();
  }
});
ol {
  width: 400px
}

.item {
  margin-bottom: 5px;
}

.item button {
  margin-left: 5px;
  float: right;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ol>
  <li id="item1" class="item">Item 1 - NMF19_N5N5N <button class="save">Save</button><button class="edit-item">Edit</button></li>
  <li id="item2" class="item">Item 2 - Custom5<button class="save">Save</button><button class="edit-item">Edit</button></li>
  <li id="item3" class="item">Item 3 - NMF19_N5N5F <button class="save">Save</button><button class="edit-item">Edit</button></li>
  <li id="item4" class="item">Item 4 - Custom4 <button class="save">Save</button><button class="edit-item">Edit</button></li>
  <li id="item5" class="item">Item 5 - NMF19_N5N5D <button class="save">Save</button><button class="edit-item">Edit</button></li>
</ol>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...