jQuery & CSS - 删除/添加显示:无

jQuery & CSS - Remove/Add display:none

提问人:markzzz 提问时间:2/21/2011 最后编辑:starballmarkzzz 更新时间:12/24/2022 访问量:758745

问:

我有一个带有这个类的div:

.news{
  width:710px; 
  float:left;
  border-bottom:1px #000000 solid;
  font-weight:bold;
  display:none;
}

我想用一些jQuery方法删除display:none;(所以 div 将显示)然后再次添加它(所以 div 会阴影)。

我该怎么做?

jQuery CSS的

评论

3赞 JCOC611 2/21/2011
jQuery的?“所以 div 会阴影”......你的意思是它会淡出??$(".news").show()
0赞 markzzz 2/21/2011
是的,有效!一样!!!谢谢;)$(".news").show()$(".news").hide()
3赞 Eli Gundry 2/21/2011
你可以把它浓缩成一个语句$('.news').toggle();
0赞 Heretic Monkey 4/20/2017
如何使用 Jquery 更改 css display none 或 block 属性的可能重复?

答:

6赞 Yorian 2/21/2011 #1

您没有向我们提供太多信息,但总的来说,这可能是一个解决方案:

$("div.news").css("display", "block");

评论

0赞 markzzz 2/21/2011
您还需要哪些其他信息?我认为这是一个简单的问题,不是吗?无论如何,我通过使用和$(".news").show()$(".news").hide() ;)
0赞 Yorian 2/21/2011
一个令人讨厌的问题是:页面上还有更多的div.news吗?在这种情况下,这将显示所有这些。
6赞 Dave Child 2/21/2011 #2

jQuery 的 .show() 和 .hide() 函数可能是你最好的选择。

10赞 rubiii 2/21/2011 #3

我建议添加一个类来显示/隐藏元素:

.hide { display:none; }

然后使用 jQuery 的 .toggleClass() 来显示/隐藏元素:

$(".news").toggleClass("hide");
82赞 JCOC611 2/21/2011 #4

jQuery为您提供:

$(".news").hide();
$(".news").show();

然后,您可以轻松地显示和隐藏元素。

评论

43赞 lolesque 6/16/2014
问题是,do nor remove ,而是放置 or 取决于元素,如果元素使用不寻常的样式,它可能会破坏布局。.show()display: nonedisplay: blockinlinedisplay
0赞 Jarrod 8/31/2017
@lolesque我找到了一个简单的“黑客”来解决这个问题。只需在你的 css 中使用,但在你的 js 中,也同时使用。这将允许该函数工作。element{display:none;}element.hide()show()
12赞 Hussein 2/21/2011 #5

使用切换来显示和隐藏。

$('#mydiv').toggle()

http://jsfiddle.net/jNqTa/ 检查工作示例

评论

1赞 TylerH 4/3/2015
请注意,自 jQuery 1.9 起已弃用。.toggle()
1赞 Paul 8/22/2015
@TylerH我看不到注释,无法看到它已被弃用?
0赞 TylerH 8/23/2015
@Paul 对不起,我在想切换事件 api.jquery.com/toggle-event
17赞 Eli Gundry 2/21/2011 #6

所以,我给你一个示例代码:

<div class="news">
Blah, blah, blah. I'm hidden.
</div>

<a class="trigger">Hide/Show News</a>

该链接将成为单击时显示 div 的触发器。所以你的 Javascript 将是:

$('.trigger').click(function() {
   $('.news').toggle();
});

几乎总是最好让jQuery处理隐藏和显示元素的样式。

编辑:我看到上面的人建议为此使用 和。 允许您仅使用一种效果同时执行这两项操作。所以这很酷。.show.hide.toggle

评论

1赞 user3267755 11/5/2014
显示函数的好主意。很多时候,如果您需要单击某些内容并显示它,您也希望该功能能够隐藏它。toggle
266赞 Snehal Ghumade 3/5/2013 #7

要隐藏div

$('.news').hide();

$('.news').css('display','none');

并显示:div

$('.news').show();

$('.news').css('display','block');

评论

2赞 Jitesh Sojitra 7/19/2016
$('.news').css .css('显示','块');为我工作!谢谢谢哈尔!
4赞 ed22 6/4/2020
如何将“显示”样式重置为最初在CSS中设置的任何样式,而不是“阻止”?
0赞 theonlygusti 4/1/2021
这些是别名吗?
4赞 nmirceac 1/24/2014 #8

如果你有很多想要或的元素,你将浪费大量资源来做你想做的事 - 即使使用 or - 0 参数是动画的持续时间。.hide().show().hide(0).show(0)

与仅用于操作元素的显示属性的 Prototype.js 和方法相反,jQuery 的实现更复杂,不建议用于大量元素。.hide().show()

在这种情况下,您可能应该尝试隐藏和展示.css('display','none').css('display','')

.css('display','block')应该避免,特别是当你使用内联元素、表格行(实际上是任何表格元素)等时。

23赞 Sergio 2/10/2014 #9

在 JavaScript 中:

getElementById("id").style.display = null;

在jQuery中:

$("#id").css("display","");

评论

0赞 TrippinBilly 10/10/2014
我不得不使用 $(“#id”).css('display', '');使其在删除“display”的内联样式时正常工作
1赞 Chris 5/31/2016
我也是@TrippinBill(使用 Mac Firefox 43) - 已提交编辑。这些似乎是删除 CSS 属性而不是反转它的唯一方法。这允许它被更广泛的 CSS 赋值覆盖,而反转则不会。
11赞 shoesel 9/9/2014 #10

通过jQuery的css-api删除内联“display:none”的唯一方法是用空字符串重置它(顺便说一句,不起作用!null

根据 jQuery 文档,这是“删除”曾经设置的内联样式属性的一般方法。

$("#mydiv").css("display","");

$("#mydiv").css({display:""});

应该正确地做这个伎俩。

恕我直言,jQuery 中缺少一个可以称为“unhide”或“reveal”的方法,它不仅仅是设置另一个内联样式属性,而是如上所述正确设置显示值。或者也许应该存储初始内联值并应该恢复它......hide()show()

2赞 Anders M. 8/24/2015 #11

考虑到 lolesque 的评论是最佳答案,您可以添加一个属性或类来显示/隐藏具有与通常不同的显示属性的元素,如果您的网站需要向后兼容性,我建议创建一个类并添加/删除它以显示/显示元素

.news-show {
display:inline-block;
}

.news-hide {
display:none;
}

将 inline-block 替换为您选择的首选显示方法,并使用 jquerys addclass https://api.jquery.com/addclass/ 和 removeclass https://api.jquery.com/removeclass/ 而不是 show/hide,如果向后兼容性没有问题,您可以使用这样的属性。

.news[data-news-visible=show] {
display:inline-block;
}

.news[data-news-visible=hide] {
display:none;
}

并使用 jquerys attr() http://api.jquery.com/attr/ 来显示和隐藏元素。

无论您喜欢哪种方法,它都可以让您在以这种方式显示/隐藏元素时轻松实现 css3 动画

5赞 SRI 9/4/2015 #12

由于某种原因,切换对我不起作用,我在浏览器中检查元素时收到了错误。所以我使用了下面的代码,它开始为我工作。uncaught type error toggle is not a function

$(".trigger").click(function () {
    $('.news').attr('style', 'display:none');
})

使用了jquery脚本文件。jquery-2.1.3.min.js

1赞 Hackinet 4/29/2020 #13

使用加法代替它可能会破坏事情。show()display:blockdisplay:hide

为了避免这种情况,您可以有一个带有属性的类,并使用 切换该元素的类。display:nonetoggleClass()

$("button").on('click', function(event){  $("div").toggleClass("hide"); });
.hide{
   display:none;
}

div{
   width:40px;
   height:40px;
   background:#000;
   margin-bottom:20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
<button>Toggle Box</button>

没有一个答案提到这一点。

0赞 samjco-com 5/9/2022 #14

以下是使用 JS 显示和隐藏的几个不同示例:

http://jsfiddle.net/vsLkb8a7/8/

CSS:

<style>
.elem{
    width:300px;
    height:300px;   
}

.divClass1{
    background:red;
}
.divClass2{
    background:blue;
}
.divClass3{
    background:green;
}
.divClass4{
    background:orange;
}
.divClass5{
    background:black;
}
.divClass6{
    background:yellow;
}
.hidemeClass{
  display:none;
}

.showmeClass{
  display:block;
}
</style>

HTML格式:

<button class="myBtn">show and hide div</button>
<div id="" class="elem divClass1"></div>
<div id="" class="elem divClass2 showmeClass"></div>
<div id="divId" class="elem divClass3"></div>
<div id="" class="elem divClass4"></div>
<div id="" class="elem divClass5"></div>
<div id="" class="elem divClass6"></div>

jS:

jQuery(".myBtn").click(function () {

  //Simple toggle
  jQuery('.divClass1').toggle();
  

  //OR use a toggle between classes. Of course you would have to add: .hidemeClass{display:none;}.showmeClass{display:block;} to your stylesheet and the element should have atleast the default class.
  jQuery('.divClass2').toggleClass('hidemeClass showmeClass');



  //OR let's use a toggle with a case statement
  jQuery(this).toggleClass('hidediv');
  
  if (jQuery(this).hasClass('hidediv')){


    //using Plain Javascript
    const el= document.getElementById("divId");
    el.style = "display:none;"; //display:unset or :initial


    //or using Attr()
    jQuery('.divClass4').attr('style', 'display:none');
    //display:unset or :initial

    //or using css()
    jQuery('.divClass5').css('display','none');
    //display:unset or :initial


    //or using builtin hide()
    jQuery('.divClass6').hide();

  }else{

    //using Plain Javascript
    const el= document.getElementById("divId");
    el.style = "display:block;"; //display:unset or :initial

    //or using Attr()
    jQuery('.divClass4').attr('style', 'display:block'); 
    //display:unset or :initial

    //or using css()
    jQuery('.divClass5').css('display','block');
    //display:unset or :initial


    //or using builtin show()
    jQuery('.divClass6').show();

  }


});