3

在下面的 html 中,我可以隐藏使用 CSS 或 jQuery开始(和结束的内容吗?)我面临的问题是(后面的代码没有包装在任何 div 中,所以我不能使用 CSS 来查找 div 类和 set display:none

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

6 回答 6

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/

于 2012-07-26T19:21:44.997 回答
0

您是否尝试过使用元素 display:none; ?

于 2012-07-26T19:21:49.280 回答
0

您不能隐藏部分 DOM 节点,只能隐藏完整的节点。

您需要更改标记以将包括括号在内的整个链接包含在单个<span>.

这可以在 Javascript 中完成,但在源代码中执行会容易得多。

于 2012-07-26T19:23:24.610 回答
0

使用 jquery:

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

这将只留下括号

于 2012-07-26T19:25:17.117 回答
0

我不得不重读你的帖子几次,但我想我明白你想要什么。您将无法直接执行您要求的操作。

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

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

  1. 构造一个 JQuery 表达式来查找外部 span 元素
  2. 使用 $(e).css('display','none') 隐藏 span 元素
  3. 使用javascript复制span的内容,去掉要隐藏的东西
  4. 创建一个包含 #3 中创建的内容的新 span,将其添加到 DOM 之前或之后隐藏的 span。
  5. 您现在可以来回切换以使内容交换可见性。
于 2012-07-26T19:25:32.553 回答
0

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

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

$('.go').bind('click', function(e){
    $('.hideme').hide();
});
于 2012-07-26T19:33:21.663 回答