Javascript jQuery-搜索字符串中的值并删除整个条目,直到li标记

Javascript jQuery-搜索字符串中的值并删除整个条目,直到li标记,javascript,jquery,Javascript,Jquery,我得到了这段代码,它是一个字符串,因为ACF是如何工作的: <div class="acf-fc-popup"><ul><li><a href="#" data-layout="two_column_layout" data-min="0" data-max="0">Two Column Layout</a></li><li><a href="#" data-layout="full_width_conte

我得到了这段代码,它是一个
字符串
,因为ACF是如何工作的:

<div class="acf-fc-popup"><ul><li><a href="#" data-layout="two_column_layout" data-min="0" data-max="0">Two Column Layout</a></li><li><a href="#" data-layout="full_width_content" data-min="" data-max="">Full Width Content</a></li><li><a href="#" data-layout="full_width_image" data-min="" data-max="">Full Width Image</a></li><li><a href="#" data-layout="full_width_video" data-min="" data-max="">Full Width Video</a></li><li><a href="#" data-layout="icons_with_heading" data-min="" data-max="">Icons with Heading</a></li><li><a href="#" data-layout="full_width_image_stretched_with_heading" data-min="" data-max="">Full Width Image (Stretched) with Heading</a></li><li><a href="#" data-layout="instafeed" data-min="" data-max="">Instagram Feed</a></li><li><a href="#" data-layout="content_blocks" data-min="" data-max="">Content Blocks</a></li><li><a href="#" data-layout="gallery" data-min="" data-max="">Gallery</a></li><li><a href="#" data-layout="logo_slider" data-min="" data-max="">Logo Slider</a></li><li><a href="#" data-layout="testimonials" data-min="" data-max="">Testimonials</a></li><li><a href="#" data-layout="call_to_action" data-min="" data-max="">Call to Action</a></li><li><a href="#" data-layout="twitter" data-min="" data-max="">Twitter</a></li><li><a href="#" data-layout="latest_news_slider" data-min="" data-max="">Latest News Slider</a></li><li><a href="#" data-layout="contact_form" data-min="" data-max="">Contact Form</a></li><li><a href="#" data-layout="separator" data-min="" data-max="">Separator</a></li><li><a href="#" data-layout="projects_slider" data-min="" data-max="">Projects Slider</a></li><li><a href="#" data-layout="map" data-min="" data-max="">Full Width Map</a></li><li><a href="#" data-layout="before_after_image" data-min="" data-max="">Before/After Image</a></li><li><a href="#" data-layout="accordion_section" data-min="" data-max="">Accordion Section</a></li></ul></div>

这允许我用跨距替换
全宽内容
,但我无法解决如何扩展匹配以包括包装
li
,并基本上用零替换它。

不要使用正则表达式来处理类似的问题。 您只需创建一个DOM元素并对其进行处理。 以下是一个例子:

var str=`
  • <; var-elm=$(str); elm.find(“li:has([data layout=full\u width\u content]))).remove(); $(“正文”)。附加(elm)
    您可以创建jQuery对象,然后可以使用各种API对其进行操作

    var tmpl=
    • ; //创建jQuery对象 var tmplDiv=$('',{html:tmpl}); //目标元素并将其删除 tmplDiv.find('a[data layout=“two_column_layout”]”)。最近('li')。remove(); //更新变量 tmpl=tmplDiv.html(); //去污点 console.log(tmpl)
      为什么要对字符串值进行操作?将其解析为HTML,然后您可以使用jQuery方法轻松地选择和删除元素<代码>/(
    • *全宽内容。*?/
    应该可以做到这一点。
    字符使表达式尽可能少地匹配字符possible@Ander如果有不止一个元素,这将不起作用。这里有一个例子:@CBroe因为这是ACF吐出来的,这不是我的代码,你不是在它被插入列表后直接做吗?如果您可以挂接到该元素(或者添加第二个单击处理程序,在现有的处理程序更新列表后调用该处理程序),那么您可以直接对生成的DOM结构进行操作,使用jQuery选择器轻松找到元素,转到父元素,然后删除该元素。我的回答:
    $(“”).html(html).find('a[data layout=“两列布局”]).each(function(){$(this).closest('li').remove();}.end().html();
    $(".tmpl-popup:contains('full_width_content')").html(function(_, html) {
       console.log(html.replace(/(full_width_content)/g, '<span class="smallcaps">$1</span>'));
    });