如何在点击事件上刷新标签内容。 WordPress 和 Javascript

Posted

技术标签:

【中文标题】如何在点击事件上刷新标签内容。 WordPress 和 Javascript【英文标题】:How to refresh tab content on click event. Wordpress and Javascript 【发布时间】:2018-03-28 18:15:36 【问题描述】:

这可能是关于我正在研究的 Worpress 主题的第二个或第三个问题。这是我需要帮助的网站post sample with +2 iframes

我想要的是在单击不同选项(li 元素)时阻止当前视频 iframe 缓冲。 它的当前状态与我想要的相反。我的意思是所有 iframe 都可以同时复制,我想避免这种情况。

这是我的 php 代码: 你可以看到我有一个类为“nav-item”的 li 元素,要显示的内容(<?php echo $iframe; ?>)在类“video-grid”的 div 内

<!-- Menu-tabs) -->
<?php $iframe_name = get_post_meta($post->ID, 'Vimeo URL', true); ?>
<?php if (!empty($iframe)) : ?>
<?php else : ?>
<ul class="nav nav-pills nav-justified" id="myTab" role="tablist">
<?php $links = get_post_custom_values( 'Iframe' ); ?>
<?php if (is_array($links)) : ?>
<?php foreach ($links as $key=>$li) :  ?>
<li class="nav-item <?php echo $key == 0 ? 'active ' : ''; ?>">
<a class="nav-link " data-toggle="tab" href="#tab<?php echo $key; ?>" role="tab" aria-controls="tab" aria-expanded="true">Option</a>
</li>
<?php endforeach ; ?>
<?php endif; ?>
</ul>
<div class="tab-content" id="myTabContent">
<!--------------------------------------------------------- Content-tabs / Iframes players --------------------------------------------------------------------------------->
<?php $player = get_post_custom_values( 'Iframe' ); ?>
<?php if (is_array($player)) : ?>
<?php foreach ($player as $key=>$iframe) : ?>
<div class="tab-pane <?php echo $key == 0 ? 'active ' : ''; ?>" id="tab<?php echo $key; ?>" role="tabpanel" aria-labelledby="tab">
<br>
<div class="song">
<div class="video-grid">
<?php echo $iframe; ?>
</div>
</div>
</div>             
<?php endforeach ?>

我尝试通过使用一些 javascript 代码来执行此操作,但它还没有工作。这是我目前所拥有的:

$(document).ready(
    function() 
        $('.video-grid').click('.nav-item');
            reload('.video-grid');
        );

你们能帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

您可以重新加载 iframe 元素的 src 以阻止它们...

$(document).ready(function() 

    $('a.nav-link').click(function() 
        $('div#myTabContent iframe').each(function()  
            $(this).attr('src',$(this).attr('src'));  
        );
    );

);

已编辑

使用检查器更深入地检查您的代码,另一种解决方案(更快、更清晰、可能更好)是搜索前一个活动面板并停止该面板的 iframe(重新加载其余部分实际上没有意义,因为它们没有运行)...

$(document).ready(function() 

    $('a.nav-link').click(function() 
        $('div#myTabContent div.tab-pane.active iframe').attr('src',function()  return $(this).attr('src'); );
    );

);

这里有一个关于你的案例的小提琴示例...https://fiddle.jshell.net/rigobauer/em5vw5e7/

【讨论】:

对不起,回答迟了,但我试过你的代码,但它不起作用:/。我忘了提到 iframe 可以来自不同的站点。 Youtbe、Vimeo 等所以没有真正特定的 iframe,只是一般的 iframe。 @Kevin 我在容器选择器中有一个错误(我有div.myTabContent 而不是div#myTabContent)。我已经更正了答案。我知道您的 iframe 具有不同的来源提示,但没关系,重新签名 src 属性会停止并重新加载内容。 Yu 可以查看这个小提琴示例...fiddle.jshell.net/rigobauer/taxqtowz @Kevin ...在这里您还有另一个与您的特定情况更相似的小提琴(fiddle.jshell.net/rigobauer/em5vw5e7)。您会看到,如果您开始播放一个视频,当您点击其他选项卡时,视频会停止。 谢谢,hermano(我知道你来自西班牙)。我尝试了编辑代码,它工作得很好;这正是我想要的:)。 我的荣幸!!祝你有美好的一天,愉快的编码!

以上是关于如何在点击事件上刷新标签内容。 WordPress 和 Javascript的主要内容,如果未能解决你的问题,请参考以下文章

页面点击,不是a标签也会刷新原因

移动端 点击返回按钮页面不刷新

jQuery刷新div内容,并对刷新后元素绑定事件。$(document).on()

button标签默type为submit,点击以后会引发提交事件,然后页面刷新。

button标签默type为submit,点击以后会引发提交事件,然后页面刷新。

在每个点击事件上重置/刷新模态数据