首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >展示:block扼杀我的风格

问展示:block扼杀我的风格
EN

Stack Overflow用户
提问于 2013-05-03 20:17:34
回答 4查看 154关注 0票数 0

我有一个表,它在我用来筛选表的一个元素中有一个inputbox。

当我在盒子里写东西的时候,表格就会被过滤掉。

奇怪的是,如果我使用display:block来显示我想要查看的行,它会完全破坏行的外观。但是如果我使用jquery .toggle(),它就能正常工作。

为什么会这样呢?

HTML:

代码语言:javascript
复制
<body>
    <table>
        <tr><th>Users<input type="text" id="filter"/></th></tr>
        <tr class="user" data="patrick"><td>Patrick</td></tr>
        <tr class="user" data="john"><td>John</td></tr>
    </table>
</body>

有效的过滤器脚本

代码语言:javascript
复制
$('#filter').keyup(function(){
    $(".user").css("display", "none");
    if($("#filter").val()!=''){             
        var filterstr = $("#filter").val().toLowerCase();
        $("[data*="+filterstr+"].user").toggle();
    }else{
        $(".user").toggle();
    }
});

如果我使用display:block

​

​

CSS:

代码语言:javascript
复制
table
{
   width: 200px;
}
td
{
   border: 1px solid #000;
   font: bold 10px Helvetica, Arial, sans-serif;
   padding: 5px;
}
th
{
   background: #f3f3f3;
   border: 1px solid #000;
   font: bold 10px Helvetica, Arial, sans-serif;
   padding: 5px;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-03 20:29:06

请使用display:table-row,因为表行在默认情况下不是display:block!

票数 2
EN

Stack Overflow用户

发布于 2013-05-03 20:26:02

这是因为表的默认显示类型不是display: block,而是display: table。每个表体、行、单元格等也有自己的显示类型。我认为JQuery的toggle()方法根据您要切换的元素设置正确的显示类型。

票数 1
EN

Stack Overflow用户

发布于 2013-05-03 20:28:44

如果不看到CSS就很难判断,但这可能是因为"display:block;“在输入中添加了一个边框,而切换则没有。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16358755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档