在一个函数中为两个 jquery 语句开票

Posted

技术标签:

【中文标题】在一个函数中为两个 jquery 语句开票【英文标题】:invocing two jquery statements in one function 【发布时间】:2021-03-22 04:29:43 【问题描述】:

函数 user_delete 应该 如果值与提供的参数匹配,则循环选择框的选项并获取类名 将它们存储在变量中

然后循环遍历文档 并删除该特定类的所有元素 如果跨度具有该类元素,则异常 只删除那个元素的值

查询语句单独工作 将它们插入到 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();
     

);


    );





【问题讨论】:

有什么理由让 2 个 foreach 嵌套在另一个中?似乎你可以做第一个,将结果添加到一个数组中,然后分别做你对查询选择器所做的事情 后面的逻辑是遍历那个特定的选择框来获取类名 是的,但是你每次都执行嵌套的forloop,对于列表中的每个元素,即使是那些不匹配的元素。 【参考方案1】:

您可以使用选择器在不循环的情况下获取选项的值。

如果该值存在,则查找该类。然后对于 span,将 innerhtml 设置为空。

然后您可以找到具有相同类的非跨度并将它们从 dom 中完全删除。

CSS 只是为了表明 span 为空但仍然存在。

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.testdisplay: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>

【讨论】:

以上是关于在一个函数中为两个 jquery 语句开票的主要内容,如果未能解决你的问题,请参考以下文章

自动开票javascript函数

如何在javascript中为函数添加回调

在For循环中为点击功能分配JQuery

如何在 laravel 中为 highcharts 做 if else 语句

是否可以在 jquery 函数中为 JQuery UI 工具提示设置不同的 UI 主题

在 postgresql 中为每个更新的行调用一个函数