隐藏除javascript之外的所有链接?

时间:2012-04-01 07:41:29

标签: javascript jquery

除了javascript中的一个链接外,隐藏所有链接的最佳方法是什么? (jquery没问题)

说我有以下内容:

<div id="choices"> 
  <div><a href="#">A<></div> 
  <div><a href="#">B</a></div> 
  <div><a href="#">C</a></div> 
</div>

我想这样做,如果用户点击链接A,B或C,则不包含所选内容的div将消失,并且会在警告框中弹出所选的选项。单击重置按钮后,所有div都会正常显示。

示例:用户单击A,导致B和C div隐藏。用户踢“重置”按钮,然后再次显示。

我如何做到这一点?

注意:我已经分别为每个A,B,C div分配了ID,并且创建了一个函数,当用户点击B时,它会为我想要隐藏的那些调用$(divnotclicked).hide() 。对于重置按钮,我只为它们中的每一个执行.show()$(A).show(),$(b)$ .show()(C).show()....但是这些必须是一个没有我为每个人分配ID的方法。我正在寻找最好的方法。

我正在寻找最好的方法,最好不要为每个人手动调用函数或为“choices”div中的每个div分配ID。或者在单击“重置”按钮时必须将每个div调用为“.show”。

6 个答案:

答案 0 :(得分:2)

使用jQuery,它非常简单:

$('#choices div').click(function() { $(this).siblings().hide(); });
$('#resetButton').click(function() { $('#choices div').show(); });

此外,这里有一个jsFiddle代码。一般来说,当您需要使用jQuery(或其他框架)时,jsFiddle是一个非常好的工具。

答案 1 :(得分:1)

只需获取所有链接并删除使用not方法点击的链接:

$('#choices a').click(function(e){
  e.preventDefault(); // stop the click from activating the link
  $('#choises a').not(this).parents().hide();
  // do something with the chosen link
});

$('#reset').click(function(){
  $('#choices a').parents().show();
});

答案 2 :(得分:0)

为每个链接指定其个人ID。并为所有这些类添加相同的类例如:

<a class="mylinks" id="link01" href="someURL">friendly text</a>

然后,当有人点击您的某个按钮时,请将该类的css-visibility设置为隐藏,然后将属于该按钮的ID的可见性设置为再次可见。

答案 3 :(得分:0)

我将如何做到这一点:

$('#choices a').click(function() {
    $(this).parent().siblings().hide();
});

重置:

$('#resetButton').click(function() {
    $('#choices div').show();
});

以下是一个有效的例子:http://jsfiddle.net/W9Sym/

答案 4 :(得分:0)

使用:

<div id="choices"> 
    <div><a href="#">A</a></div> 
    <div><a href="#">B</a></div> 
    <div><a href="#">C</a></div> 
</div>
<button>Reset</button>

隐藏未选中的div并将重置显示为here's a demo

$(function() {

    $('#choices').on('click', 'a', function() { //bind click handler to choices, for links
        $(this).parent().siblings().hide();     //find the others and hide them
    });

    $('button').on('click', function() {        //bind click to button
        $('#choices > *').show();               //show all children of choices           
    });

});​

答案 5 :(得分:0)

您可以尝试这样做: HTML

<div id='A'>Hi, I'm A</div>
<div id='B'>Hello</div>
<div id='C'>Aaargh!</div>

<a href='#A'>A</a>
<a href='#B'>B</a>
<a href='#C'>C</a>

<button type='reset'>Reset</button>

的jQuery

$('a').click( function() {
   var show = $(this).attr('href');
   $('div').each( function(e) {
       $(this).not(show).hide();
   });
   e.preventDefault();
});

$('button').click( function() {
   $('div').show();
});

有点冗长,但它应该完成工作。