Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery筛选标记_Javascript_Jquery_Filter_Svg - Fatal编程技术网

Javascript 使用jQuery筛选标记

Javascript 使用jQuery筛选标记,javascript,jquery,filter,svg,Javascript,Jquery,Filter,Svg,我有以下几点: <g> <rect id="1"> <text id="2"> <g> <path id="3"> </g> </g> <text id="4"> <rect id="5"> 我原以为过滤器是一个递归函数,但它似乎不起作用。还尝试: $result = $svgCollection.filter('text, rect,

我有以下几点:

<g>
    <rect id="1">
    <text id="2">
    <g>
        <path id="3">
    </g>
</g>

<text id="4">
<rect id="5">
我原以为过滤器是一个递归函数,但它似乎不起作用。还尝试:

$result = $svgCollection.filter('text, rect, path');

但是没有快乐。有什么想法吗?

不知道这是否是一个好的解决方案,但是:

$("g").children().unwrap();
该方法旨在实现您想要的目标:

$svgCollection.find("g > *").unwrap();
编辑:如果不希望此操作影响DOM,可以克隆集合:

var $result = $svgCollection.clone().find("g > *").unwrap().end();
或更短:

$('g').replaceWith(function() {
    return $(this).contents()
});

最后一个。也许你在某个地方出错了?我需要删除变量集合中的“g”标记,而不是DOM。这本身并不能解决问题,如果我正确理解这个问题,可能我们想要得到的标记不是
@Jon的后代,这应该不是问题:只有
元素将被
unwrap()
删除,其他元素将保持不变。正确的Frédéric,将有一些标记(例如在根中)不是
@FrédéricHamidi的后代:是的,但是
find
会将一些元素排除在等式之外(请参见OP示例中的ids 4和ids 5)。@Jon,
find()
只匹配
元素的子元素以将其展开。所有其他元素将保持原样,包括ID
4
5
。我错过什么了吗?
var $result = $svgCollection.clone().find("g > *").unwrap().end();
$('g').each(
    $(this).replaceWith($(this).contents())
});
$('g').replaceWith(function() {
    return $(this).contents()
});