我正在尝试删除与所单击元素的子类相匹配的所有元素的属性。
例如
<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
并删除{{ 1}}任何元素也具有子元素的匹配类href
。
因此,对于以下情况,代码将执行相同的操作
.child1
删除所有<span class="parent">
<span class="child2">
<a href="mylink">text</a>
</span>
</span>
<span class="child2">
<a href="mylink">text</a>
</span>
类的href
。
原因是因为我需要多次使用此功能,并且我不希望每次指定要删除.child2
的类时都必须编写不同的代码。
我认为构造将是以下几行,但我不确定使用什么组合的jQuery来实现它。
href
答案 0 :(得分:4)
代码应该是不言自明的:
$('.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');
});
在这里,我只是寻找与任何一个孩子有共同点的任何元素。如果需要,您必须调整代码以将其限制为某些元素。
代码也可以简化,具体取决于你的实际标记(即如果每个父母只有一个孩子,或者每个孩子只有一个班级)。
答案 1 :(得分:1)
$(".parent").click(function () {
var $this = $(this),
klass = $this.children("span").attr("class");
$("." + klass).find("a").removeAttr("href");
});