вызов двух операторов jquery в одной функции

#javascript #jquery #dom

#javascript #jquery #dom

Вопрос:

функция user_delete должна перебирать параметры поля выбора и получать имя класса, если значение соответствует аргументу provides, хранящему их в переменной

затем выполните цикл по документу и удалите все элементы с этим конкретным классом исключение, если в span есть этот элемент класса, удалите только значение этого элемента

операторы запроса работают отдельно
, вставка их в функцию on, похоже, не имеет эффекта

 
function user_delete(filename) {
  
     $("#select_updateFile option").each(function(i){
        if ($(this).val() === filename ) {
              var class_name = $(this).attr('class');

        }

        document.querySelectorAll(class_name).forEach(function (e) {
    if ($(e).prev().is("span")) {
        $(e).empty();
    } else {
        e.remove();
     }
}
);


    });

}



 

Комментарии:

1. По какой-либо причине у вас есть 2 foreach, вложенных один в другой? Кажется, вы могли бы сделать первое, добавить результат в массив, а затем отдельно делать все, что вы делаете с queryselector

2. логика заключалась в том, чтобы перебрать это поле выбора specif, чтобы получить classname

3. Да, но тогда вы выполняете вложенный forloop КАЖДЫЙ раз для каждого элемента в списке, даже для тех, которые не совпадают.

Ответ №1:

Вы можете получить значение параметра без перебора с помощью селектора.

Затем, если это значение существует, найдите класс. Затем для spans установите для innerHTML значение empty .

Затем вы можете найти не-области с тем же классом и полностью удалить их из dom.

CSS существует только для того, чтобы было очевидно, что диапазон пуст, но все еще существует.

 function user_delete(filename) {
   opt = document.querySelector("#select_updateFile option[value='"   filename   "']")
   if(opt){
       _class = opt.getAttribute("class")
       spans = document.querySelectorAll("span."   _class)
       spans.forEach(function(span){
         span.innerHTML = "";
       })
       
       nonspans = document.querySelectorAll("."   _class   ":not(span)")
       nonspans.forEach(function(el){
         el.remove();
       })
   
   }
  }

user_delete("aa") 
 span.test{display:block;background:red;height:40px;width:140px;} 
 <span class="test">EMPTY ME</span>

<div class="test">DELETE ME</div>

<select id="select_updateFile">
<option class="test" value="aa">33</option>
<option class="testa" value="bb">22</option>

</select>