Jquery 标识子元素的类并删除所有匹配类的属性

Jquery 标识子元素的类并删除所有匹配类的属性,jquery,Jquery,我试图删除与所单击元素的子元素的类匹配的所有元素的属性 比如说 <span class="parent"> <span class="child1"> <a href="mylink">text</a> </span> </span> <span class="child1"> <a href="mylink">text</a> </span

我试图删除与所单击元素的子元素的类匹配的所有元素的属性

比如说

<span class="parent">
    <span class="child1">
        <a href="mylink">text</a>
    </span>
</span>

<span class="child1">
    <a href="mylink">text</a>
</span>
删除所有
.child2
类的
href

这是因为我需要多次使用此功能,并且我不希望每次都必须编写不同的代码来指定要删除
href
的类

我认为这个构造应该是如下所示的,尽管我不确定使用什么jQuery组合来实现它

$("parant").click(function () {
    $.find(this.childrenClass, function () {
        $.removeAtt("href");   
    });
});

代码应该是不言自明的:

$('.parent').click(function() {
    // Get all classes from child elements.
    var classes = $(this).children().map(function() {
        return this.className.split(/\s+/);
    }).get();

    // Find any element having one of those classes, find all `a` children
    // and remove the href attribute.
    $('.' + classes.join(',.')).children('a').removeAttr('href');
});
在这里,我只是寻找与任何子类都有共同类的元素。如果需要,您必须调整代码以将其限制为某些元素

代码也可以简化,具体取决于您的实际标记(即,如果每个父级只有一个子级,或者每个子级只有一个类)


child2没有href,是一个span。href不在孩子身上,而是在孙子孙女身上。它总是向下两层,还是可以是任何数字?如果它可以是任何数字,我们如何找到我们应该匹配其类的跨度——它是顶部跨度的子级,还是A的父级?以上只是一个示例构造,它是子级还是孙子级都没有太大关系,我可以将href包含在其中。此外,href将始终与父项处于同一级别,无论是子项还是孙子项,但不会变化。谢谢。我看过这个演示,它有我想要的功能。我将尝试将它应用到我的代码中,并使其正常工作。好的,我已经测试了代码,它在构建时运行良好。然而,有一个新的问题,我或许应该在一开始就强调一下。元素的href在第一次单击时是必需的。之后就不再需要它了。代码保持原样,在对href执行初始操作之前,它会删除匹配类的所有“href”。有没有办法从单击的元素中排除href删除,而只从其他匹配元素中删除?抱歉,我无意中删除了在href上执行操作所需的类。这段代码现在运行良好,正如所需。非常感谢你。因为只有一个子类,所以我不需要指定。但是,如果将来我需要为其他内容指定一个类或哪个子类,您会建议如何修改代码?您可以将任何选择器传递到
.children()
,并只搜索特定的子类。我建议您查看一下选择器页面,了解您可以做些什么(很多;):。属性选择器在您的情况下可能是最有用的。谢谢。我看过这个演示,它有我想要的功能。我将尝试将其应用到我的代码中并使其正常工作。我已经尝试了该代码,但它产生了一个JS错误。我看不出原因,但也许有一些小的缺失?它在演示页面上工作,所以不确定。@user1941653因为代码非常简单,很难说为什么它在您的代码中不工作。
$('.parent').click(function() {
    // Get all classes from child elements.
    var classes = $(this).children().map(function() {
        return this.className.split(/\s+/);
    }).get();

    // Find any element having one of those classes, find all `a` children
    // and remove the href attribute.
    $('.' + classes.join(',.')).children('a').removeAttr('href');
});
$(".parent").click(function () {
    var $this = $(this),
        klass = $this.children("span").attr("class");
    $("." + klass).find("a").removeAttr("href");
});​