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");
});