jQuery:这里有什么问题?

时间:2014-09-21 10:18:49

标签: javascript jquery html

这是我的第一个问题。 首先看一下这段代码

 $("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/

3 个答案:

答案 0 :(得分:1)

$('.container').children('a').attr('href')

没有返回元素。它正在返回一个数组。它在容器块中返回两个。您必须运行循环以删除容器块中的所有匹配项。

答案 1 :(得分:0)

&#13;
&#13;
$( "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;
&#13;
&#13; 您需要迭代匹配的a元素。

http://jsfiddle.net/xr3gjvxx/34/

演示

答案 2 :(得分:-1)

代码中的

选择器定位#foo下的锚标记,必须将其更改为所有锚标记。

更改

$('#foo a[href="' + $('.container').children('a').attr('href') + '"]').remove();

$('a[href="' + $('.container').children('a').attr('href') + '"]').remove();

更新 - 1

您的代码正在尝试删除#foo下的所有锚标记,其中href="http://jsfiddle.net/"只是您上面代码中的一个并被删除。如果您尝试删除#foo irespective或href值下的所有锚标记,请尝试

$('#foo a').remove();

更新 - 2

好的,如果你需要遍历每个孩子并删除锚标签,那么试试

$( "body" ).on( "click", "#showstore", function() {

    $('.container').children('a').each(function(){

        $('#foo a[href="' + $(this).attr('href') + '"]').remove();

    });

});

这是a sample fiddle