【问题标题】:Advanced Custom Fields, WordPress, Javascript Tabbed Content高级自定义字段、WordPress、Javascript 选项卡式内容
【发布时间】:2021-06-04 23:38:39
【问题描述】:

(function(){
    $('ul.tabs li').on("click", function(){
        var tab_id = $(this).find("li").attr('data-tab');

        $('ul.tabs li .tab-link').removeClass('current');
        $('.tab-content').removeClass('current');

        $(this).addClass('current');
        $("#"+tab_id).addClass('current');

    });
.container{
    margin: 0 auto;
}

ul.tabs{
    margin: 0px;
    padding: 0px;
    list-style: none;
}

ul.tabs li{
    background: none;
    color: #222;
    display: inline-block;
    padding: 10px 15px;
    cursor: pointer;
}

ul.tabs li.current{
    background: #ededed;
    color: #222;
}

.tab-content{
    display: none;
    background: #ededed;
    padding: 15px;
}

.tab-content.current{
    display: inherit;
}
<div class="container">
    <?php if( have_rows('tabs') ): ?>
    <ul class="tabs">
        <?php while ( have_rows( 'tabs' ) ) : the_row(); ?>
        <?php $index = get_row_index(); ?>
        <li class="tab-link <?php if ($index == 0): ?>current<?php endif; ?>" data-tab="tab-<?php echo $index; ?>">
            <?php echo get_sub_field('services_title'); ?></li>
        <?php endwhile; ?>
    </ul>

    <?php while( have_rows('tabs') ): the_row(); ?>
    <?php $index = get_row_index(); ?>
    <div id="tab-<?php echo $index; ?>" class="tab-content <?php if ($index == 0): ?>current<?php endif; ?>">
        <?php echo get_sub_field('services_description'); ?>
    </div>
    <?php endwhile; ?>
    <?php else : ?>
    <?php // no rows found ?>
    <?php endif; ?>
</div>

**

我正在寻求帮助,让我的 javascript 最终连接到我的 HTML/PHP WordPress 代码。我相信 javascript 没有正确定位某些东西,以便能够将 current 类添加到 tab-echo index 部分。

我使用 php 来获取每个部分的标签 - 索引号,只是在添加和删除当前类别到附加帖子时遇到了麻烦。

【问题讨论】:

  • 我认为var tab_id = $(this).find("li").attr('data-tab'); 应该是var tab_id = $(this).attr('data-tab'); 和$('ul.tabs li .tab-link').removeClass('current'); 应该是$('ul.tabs li.tab-link').removeClass('current');。原因是您已经在此处定位了 LI 元素:$('ul.tabs li').on("click", function(){。 (另外,下次请发布实际的 HTML 输出 - 请记住,我们无法在此处运行您的 PHP 代码,因此很难判断生成的 HTML 会是什么样子。)
  • 很抱歉刚刚在这里发帖 - 我不知道我是否知道该怎么做!我会边走边学 :) - 上面的变化没有运气。
  • 只需复制您在页面上看到的 HTML 输出(检查 HTML 源代码,但只获取代码的相关部分),然后编辑您的问题以包含它。这样,我们在这里只处理 HTML/CSS/JS,我们更容易重现您在那里看到的内容。
  • 好的,谢谢 - 这些几乎是代码的相关部分。 :)

标签: javascript wordpress advanced-custom-fields


【解决方案1】:

您的 js 文件存在一些问题。试试这个:

jQuery(document).ready(function($) {
  $(".tabs li").each(function() {
    $(this).on("click", function() {
      var tab_id = $(this).attr('data-tab');

      $('.tabs .tab-link.current').removeClass('current');
      $('.tab-content.current').removeClass('current');

      $(this).addClass('current');
      $("#" + tab_id).addClass('current');
    });
  });
});

您可以看到这个jsfiddle 进行演示。

【讨论】:

  • 有机会你能解释一下发生了什么。
  • 当然,因为你有多个列表项,你必须使用.each 来遍历它们
  • 函数(索引)是调用我在 PHP/HTML 中输入的数字
  • 您实际上不需要那个索引变量,请参阅更新的代码。但是,该索引将保存该项目的位置,请参阅带有控制台日志的this example - 因此,如果您单击选项卡 1,则索引为 0,选项卡 2,索引为 1。还可以查看此 doc
猜你喜欢
  • 2015-12-24
  • 2018-06-15
  • 2019-04-08
  • 1970-01-01
  • 2017-08-28
  • 2012-08-10
  • 2015-01-21
  • 2017-05-01
  • 1970-01-01
相关资源
最近更新 更多