这是我的第一个问题。 首先看一下这段代码
$("body").on("click", "#showstore", function() {
$('#foo a[href="' + $('.container').children('a').attr('href') + '"]').remove();
});
HTML
<div id="showstore">Button</div>
<div id="foo">
<a href="http://jsfiddle.net/">hello</a>
<a href="http://google.com/">okay</a>
</div>
<div class="container">
<a href="http://jsfiddle.net/">bye</a>
<a href="http://google.com/">see</a>
</div>
点击'#showstore'时,只删除第一个'a'。如何从#foo中删除所有匹配的'a'?
jsFiddle :: http://jsfiddle.net/xr3gjvxx/27/
答案 0 :(得分:1)
$('.container').children('a').attr('href')
没有返回元素。它正在返回一个数组。它在容器块中返回两个。您必须运行循环以删除容器块中的所有匹配项。
答案 1 :(得分:0)
$( "body" ).on( "click", "#showstore", function() {
var links = $('.container').children('a'),
targets = $('#foo a');
links.each(function(){
targets.filter('[href="' + $(this).attr('href') + '"]').remove();
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="showstore">Button</div>
<div id="foo">
<a href="http://jsfiddle.net/">hello</a>
<a href="http://google.com/">okay</a>
</div>
<div class="container">
<a href="http://jsfiddle.net/">bye</a>
<a href="http://google.com/">see</a>
</div>
&#13;
a
元素。演示
答案 2 :(得分:-1)
选择器定位#foo
下的锚标记,必须将其更改为所有锚标记。
更改
$('#foo a[href="' + $('.container').children('a').attr('href') + '"]').remove();
到
$('a[href="' + $('.container').children('a').attr('href') + '"]').remove();
您的代码正在尝试删除#foo下的所有锚标记,其中href="http://jsfiddle.net/"
只是您上面代码中的一个并被删除。如果您尝试删除#foo irespective或href值下的所有锚标记,请尝试
$('#foo a').remove();
好的,如果你需要遍历每个孩子并删除锚标签,那么试试
$( "body" ).on( "click", "#showstore", function() {
$('.container').children('a').each(function(){
$('#foo a[href="' + $(this).attr('href') + '"]').remove();
});
});