javascript - 显示/隐藏具有特殊条件的行

标签 javascript html

我有一个带有此标记的表格:

<table>
    <tr class="odd"><td>Product 1</td></tr>
    <tr class="even"><td>Product 2</td></tr>
    <tr class="odd"><td>Product 3</td></tr>
    <tr class="even"><td>Product 4</td></tr>       
</table>

每个表行都是一个产品,有些产品有更多信息。因此,在本例中,表格如下所示:

<table>
    <tr class="odd"><td>Product 1</td></tr>
    <tr class="even"><td>Product 2</td></tr>
    <tr class="even"><td>Information 1</td></tr>
    <tr class="even"><td>Information 2</td></tr>
    <tr class="odd"><td>Product 3</td></tr>
    <tr class="even"><td>Product 4</td></tr>       
</table>

我不想隐藏包含产品信息的行,并在单击产品行后显示它。

我使用以下 Javascript 函数和 onlick=""尝试了此操作:

function showHide(id) {
    var el = document.getElementById(id);
    if( el && el.style.visibility == 'hidden')    
        el.style.visibility = 'visible'; 
    else 
        el.style.visibility = 'hidden'; 
}

但问题是我不知道如何仅定位我点击的产品的信息行。如果我可以更改标记,那就很容易了,但是这个标记是生成的,所以我只能用 Javascript 来解决它。

这个问题有办法解决吗?我创建了一个 fiddle ,因此更容易提供快速解决方案:

http://jsfiddle.net/emjay__/8B3M4/

最佳答案

您好,为此我建议您使用 Jquery 解决方案: http://jsfiddle.net/8B3M4/9/

  • 首先仅使用 CSS 隐藏所有元素:匹配以相同类名开头的所有元素。

    tr.even + .even {
     display:none;
    }
    tr.odd + .odd {
     display:none;
    }
    
  • 第二个函数显示/隐藏元素:

    $(document).ready(function () {
      $('tr.even').click(function (){
        $(this).nextUntil('.odd').toggle();
      })
    })
    

关于javascript - 显示/隐藏具有特殊条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377613/

相关文章:

javascript - Modernizr 和 ajax 加载冲突

javascript - 需要一种优雅的方法来根据输入更改内联 if 语句的返回结果

jquery - 调用新创建的类

javascript - 从亚马逊返回时获得全白屏幕

javascript - JQuery:如何选择textarea的内容作为html字符串并从中提取文本?

javascript - 如何将用户重定向到不同的页面?

css - 如何让页脚停留在网页底部?

java - 如何使用 selenium 单击复选框

html - 如何使用 Bootstrap 创建多个列,其间有空格且高度相同

html - 在 Safari 中等间距单选按钮与宽度