【问题标题】:Activating a menu dynamically when some php condition is met满足某些 php 条件时动态激活菜单
【发布时间】:2015-12-05 12:15:15
【问题描述】:

我想在满足某些 php 条件时触发一个选项卡。

这是我正在使用的引导代码,它是一个 nav-pills 和 Toggable / Dynamic。

https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<ul class="nav nav-pills">
  <li class="active"><a data-toggle="pill" href="#home">Home</a></li>
  <li><a data-toggle="pill" href="#menu1">Menu 1</a></li>
  <li><a data-toggle="pill" href="#menu2">Menu 2</a></li>
</ul>

<div class="tab-content">
  <div id="home" class="tab-pane fade in active">
    <h3>HOME</h3>
    <p>Some content.</p>
  </div>
  <div id="menu1" class="tab-pane fade">
    <h3>Menu 1</h3>
    <p>Some content in menu 1.</p>
  </div>
  <div id="menu2" class="tab-pane fade">
    <h3>Menu 2</h3>
    <p>Some content in menu 2.</p>
  </div>
</div>

默认情况下,主页选项卡处于活动状态。在加载页面之前,我想检查是否设置了全局变量,即$_SESSION['variable1']。如果没有设置,那么我应该将 menu2 设置为活动状态。

在代码的顶部,我尝试这样做,但没有成功

if (!isset($_SESSION['variable1'])){

echo " <script type=\"text/javascript\"> $('.nav-pills
a[href=\"#menu2\"]').tab('show') </script>";

}

但是,如果我检查元素,并将上面的 JavaScript 代码粘贴到控制台中,它可以工作!不过,我似乎无法在我的代码中运行它。主页选项卡保持活动状态。

【问题讨论】:

  • 您可以尝试确保您的 JavaScript 在 dom 加载后执行。如果你想让你的前端更加动态,那么有条件地回显脚本标签不是要走的路。看看 angularJS。
  • 好的,谢谢,我正在研究 angularJS。从来没有想过那个,我的意思是从来没有使用过 angularJS。 :( .

标签: javascript php jquery twitter-bootstrap-3 nav-pills


【解决方案1】:

您正在加载 HTML 之前执行脚本。

我试过了,如果你把PHP代码放在&lt;body&gt;的末尾就可以了。

        ...
        </div>
    </div>
    <?php
    if (!isset($_SESSION['variable1'])){

        echo " <script type=\"text/javascript\"> $('.nav-pills
        a[href=\"#menu2\"]').tab('show') </script>";

    }
    ?>
</body>

【讨论】:

    【解决方案2】:

    您可以尝试使用 jquery 添加类吗?

    <script>
    $(document).ready(function(){
      <?php 
         if (!isset($_SESSION['variable1'])){
      }?>
      $(".tab-pane").removeClass("active");
      $("#menu2").addClass("active");
    <?php }
      ?>
    });
    </script>
    

    希望这对你有用...

    【讨论】:

      【解决方案3】:

      我发现了如何让它发挥作用。

      我确实把它放在了正文的末尾。我犯了一个愚蠢的错误。

      实际上发生的事情是该语句总是返回false。

      if (!isset($_SESSION['variable1'])){
      
      echo " <script type=\"text/javascript\"> $('.nav-pills
      a[href=\"#menu2\"]').tab('show') </script>";
      
      }
      

      并没有执行里面的代码。因为 $_SESSION['variable1'] 总是有一个值,因为我从来没有在某个时候将它清除或销毁。我不得不使用session_detroy() 来初始化一切。它就像一个魅力。

      谢谢

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多