使用jQuery或CSS隐藏html内容

时间:2012-07-26 19:19:25

标签: jquery html css

在下面的html中,我可以使用CSS或jQuery隐藏从(开始到)结尾的内容。我面临的问题是(和更高版本的代码没有包含在任何div中,所以我不能使用CSS来查找div类并设置display:none

<span>
    <a class="test" href="#">test</a> 
    (<a href="#">?</a>) 
</span>

6 个答案:

答案 0 :(得分:3)

$('span a:not(".test")').hide();将适用于您的有限示例。

但是,它不会隐藏括号。要做到这一点,你需要一个专门的功能来删除你不想要的代码:

$('span').html(function(i,old) {
    return old.substring(0,old.indexOf('('));
});​

http://jsfiddle.net/pkMgP/

如果你想隐藏它而不是删除它,你需要将它全部包装在HTML元素中并将样式应用于:

$('span').html(function(i,old) {
    var idx = old.indexOf('(');
    return old.substring(0,idx) + '<span style="display:none">' + old.substring(idx) + '</span>';
});​

http://jsfiddle.net/pkMgP/1/

答案 1 :(得分:0)

你试过使用元素display:none; ?

答案 2 :(得分:0)

您无法隐藏DOM节点的某些部分,只能隐藏完整的节点。

您需要更改标记,将整个链接(包括括号)包装在一个<span>中。

这可以在Javascript中完成,但在源代码处理它会容易得多。

答案 3 :(得分:0)

使用jquery:

$('.test').next().hide();​

这将只留下括号

答案 4 :(得分:0)

我不得不重读你几次,但我想我知道你想要什么。你将无法直接做你所要求的。

如果您可以编辑HTML,则添加一个内部范围,围绕您要隐藏的内容并将其隐藏。

我在想你是在问这个问题,因为你无法编辑HTML。在这种情况下,你可以做的是:

  1. 构造一个JQuery表达式来查找外部span元素
  2. 使用$(e).css('display','none')
  3. 隐藏span元素
  4. 使用javascript复制范围内容,删除要隐藏的内容
  5. 创建一个新的范围,其中包含在#3中创建的内容,在您隐藏的范围之前或之后将其添加到DOM。
  6. 您现在可以来回切换以使内容交换可见性。

答案 5 :(得分:0)

只需添加一些类来定义操作。

<span>
  <a class="go" href="#">test</a> 
  (<a href="#" class="hideme">?</a>) 
</span>

$('.go').bind('click', function(e){
    $('.hideme').hide();
});