当显示的内容在数据库中具有NULL值时隐藏DIV

时间:2016-10-06 16:38:08

标签: javascript php jquery mysql sql

我有一个字体很棒的div浮动在我的图像上,提供从mysql数据库中提取的图像细节。

当我将鼠标悬停在这个(info)字体真棒图标上时,会打开一个带有mysql内容的小内联。

现在当内容为NULL时,我不希望字体真棒出现。

以下是我的代码。

<div id="hotspot1" class="hotspot" style = "position: fixed;">
                <i class="fa fa-info-circle" style="font-size:48px;color:cyan"></i>
                <div class="hover-popup well">
                <?php 
                    if ($details == null) {
                        echo "class='display-none';";
                    }
                    else {
                        echo $details; 
                    }
                    ?>
                </div>
            </div>

这个悬停弹出的CSS是

#hotspot1 {
            right:93%;
            top:3%;
        }

        .hotspot {
            line-height:20px;
            text-align:center;
            position:absolute;
            cursor: pointer;
        }

        .hotspot .text {
            width:80px;
            height:20px;
        }

        .hover-popup {
            display:none;
            z-index:auto;
        }

        .hotspot:hover .hover-popup {
            display:inline;
            position:absolute;
            left:100%;
            top:0;
            width:300px;
            height: auto;
            border:2px solid #000;
            margin: 20px;
            padding: 20px;
            font-size: 16px;
            background: #FBF0D9;
            font-style: oblique;

        .display-none {
            display:none;
        }

现在,当存在空值时,它实际上显示“class ='display-none'”

在空值时,我该怎么做才能完全消除图标?

我应该使用JS还是JQuery?

2 个答案:

答案 0 :(得分:2)

class属性需要位于它应用的元素内部,您当前echo在任何元素之外,这就是您在页面上看到它的原因。

我无法确定您正在尝试实现的目标,但似乎您希望在$details不是null时显示某些特定的HTML。

至少应该给你一些线索,

<div id="hotspot1" class="hotspot" style="position: fixed;">

   <?php if ($details != null): ?>

      <i class="fa fa-info-circle" style="font-size:48px;color:cyan"></i>

      <div class="hover-popup well">
         <?= $details; ?>
      </div>

   <?php endif; ?>

</div>   

在上面的代码中,如果$details不是null,那么将输出PHP块之间的HTML,否则不会。您可能希望将所有HTML放在PHP块之间。

答案 1 :(得分:1)

你用上面的符号混淆了风格和类别,也许这样的事情会更好吗?

<div id="hotspot1" class="hotspot" style = "position: fixed;">
    <i class="fa fa-info-circle" style="font-size:48px;color:cyan"></i>

        <?php
            $style=is_null( $details ) ? "style='display:none'" : "";
        ?>
        <div class="hover-popup well" <?php echo $style;?> >

        </div>
</div>

或者,不是添加内联样式,而是按照您最初尝试的方式分配一个类,而不是在某个地方定义css中的类。然后你可以使用类似的表示法,但引用该类 - 比如:

<style>.dispnone{ display:none; }</style>

<?php
    $class=is_null( $details ) ? "class='dispnone'" : "";
?>

<div class="hover-popup well" <?php echo $class;?> >