jquery - 识别子元素的类并删除所有匹配类的属性

标签 jquery

我正在尝试删除与所单击元素的子元素的类匹配的所有元素的属性。

例如

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

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

我有代码可以从单击的元素中删除 href 属性。但是,我希望能够删除具有相同链接的任何元素。

我当然可以通过指定特定的类来做到这一点,但我希望代码找到被单击的父级的子级的类,然后找到任何匹配的类并删除 href。

在这种情况下,用户将单击 .parent 元素,代码将搜索子元素的类 .child1,删除 href 并删除也具有子元素 .child1 的匹配类的任何元素的 href

因此,对于以下情况,代码会执行相同的操作

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

<span class="child2">
    <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');
});

在这里,我只是寻找与任何子元素具有共同类的任何元素。如果您愿意,您将必须调整代码以将其限制为某些元素。

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

DEMO

关于jquery - 识别子元素的类并删除所有匹配类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14115226/

相关文章:

jquery - 我如何更改选择 Jquery 中的默认选项

javascript - 从多组复选框中向数组添加和删除复选框值

javascript - 如何用拆分 (_) 替换文本

javascript - 模板上的 Backbone.js 事件

javascript - 在空白 HTML 文件中打印 json 请求时出现问题

jquery - 如何使用 jQuery 加载页面片段?

jquery - 添加文件时更改按钮的颜色

javascript - 使用 :after selector to display icon in conjunction with slideToggle() 的问题

javascript - jquery - 用一个新的计算字段当前值并将两者相加

jquery ui.progressbar label - 更改背景传递字母上的文本颜色