0

我有这个隐藏\显示链接的代码取决于cBoxoverlay的状态。但是当我单击关闭此项目(display:none),然后再次单击以显示它(display:block)时,我的链接(#close-news)仍然没有显示。

jQuery(document).click(function () {
  if (jQuery("#cBoxOverlay").css("display", "none")) {
    jQuery("#close-news").css("display", "none");
  } else if (jQuery("#cBoxOverlay").css("display", "block")) {
    jQuery("#close-news").css("display", "block");

我在哪里犯错了?

4

5 回答 5

1

试试这个 - 不需要 if 语句。您可以将其设置#close-news为任何#cBoxOverLay内容

$(document).click(function () {        
    $("#close-news").css("display", $("#cBoxOverlay").css('display'));
}
于 2012-07-25T16:34:49.350 回答
0

Try this, based on @Raminson's answer:

$(document).click(function () {
  if ($("#cBoxOverlay").is(':hidden')) {
    $("#close-news").css("display", "none");
  } else{
    $("#close-news").css("display", "block");

May be give a try on this one, too:

$(document).click(function(){
$('#close-news').css('display', function(){return $('#cBoxOverlay').css('display');});
});
于 2012-07-25T16:33:00.793 回答
0

Use is(":visible") to check if the element is visible, and then either show or hide...

jQuery(document).click(function () {
    if (jQuery("#cBoxOverlay").is(":visible")) {
        jQuery("#close-news").hide();
    } else {
        jQuery("#close-news").show();
    }
});
于 2012-07-25T16:33:29.773 回答
0

你可以试试:

if ($("#cBoxOverlay").css("display") == "none") {
  // ...
}

但是你可以使用is方法:

if ( $("#cBoxOverlay").is(':hidden')) {
       // ...
}

 $(document).click(function(){
   if ($("#cBoxOverlay").is(":hidden")) { // if #cBoxOverlay is hidden
       $("#close-news").hide() // hide the #close-news
    } else if ($("#cBoxOverlay").is(":visible")) { // if #cBoxOverlay is visible
       $("#close-news").show() // // show the #close-news
    }
 })       

您可以删除第二个条件并使用else,因为当元素不隐藏时它是可见的,当然。

于 2012-07-25T16:29:31.567 回答
0

使用类,做一个更清洁的工作。

如果您不想使用类,请尝试使用 jQuery 的切换,它基本上完全符合您的目标:http ://api.jquery.com/toggle/

于 2012-07-25T16:30:37.923 回答