我正在尝试删除与所单击元素的子元素的类匹配的所有元素的属性。
例如
<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');
});
在这里,我只是寻找与任何子元素具有共同类的任何元素。如果您愿意,您将必须调整代码以将其限制为某些元素。
代码也可以简化,具体取决于您的实际标记(即,如果每个父级只有一个子级或每个子级只有一个类)。
关于jquery - 识别子元素的类并删除所有匹配类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14115226/