【问题标题】:Don't load hidden images or load contents when a tab is clicked单击选项卡时不要加载隐藏的图像或加载内容
【发布时间】:2017-05-03 14:49:34
【问题描述】:

Here is my website

我有四个选项卡,点击每个选项卡都会显示不同的画廊(Nextgen Pro 画廊)。

它可以工作,但性能很糟糕,因为我目前正在加载所有内容。我想将其更改为仅在单击选项卡时加载,这样我一次只加载 50 张图片,而不是一次加载多达 200 张图片。

目前我实现这个标签和显示功能的脚本如下(JavaScript);

jQuery(document).ready(function() {
        if (jQuery('.customtabs > br').length) {
            jQuery('.customtabs > br').remove();
        }
});

function displaycustom_tab(obj) {
        var totalSlides = jQuery(obj).parent().find('>div').length / 3;
        var tabi = 0;
        var slidei = jQuery(obj).index() + 1;
        if (slidei > (2 * totalSlides)) {
            tabi = slidei - (2 * totalSlides);
        } else if (slidei > (totalSlides)) {
            tabi = slidei - totalSlides;
        } else {
            tabi = slidei;
        }
        tabi--;
        jQuery('.customtabs > div').removeClass('activetab');
        jQuery('.customtabs > div:eq(' + tabi + ')').addClass('activetab');
    jQuery(window).trigger('resize');
}

每个选项卡都有一个名为“.imgslide”的 img 类,每次我单击一个选项卡时,该选项卡都会变为活动状态(其他 3 个被隐藏)并显示它的图库(“.customtabs”)。我什至不确定这是否是一种有效的方法。

我创建了另一个脚本来使用 AJAX

jQuery(document).on( 'click', '.img.imgslide', function( event ) {
    console.log("ajax call worked");
    event.preventDefault();
    jQuery.ajax({
        url: loadgallery.ajaxurl,
        type: 'post',
        data: {
            action: 'load_gallery'
        },
        success: function( result ) {
            alert( result );
        }
    })
})

什么都没有发生,包括 console.log。

我已经阅读了这些帖子,但我不知道如何去做。

https://stackoverflow.com/questions/502391 https://stackoverflow.com/questions/3818063

我从这个 wordpress 教程中得到了代码源;

https://premium.wpmudev.org/blog/load-posts-ajax

感谢我能得到的任何帮助。

编辑 1

我想我追求的功能类似于this

编辑 2

感谢@Vel 指出语法问题。脚本会加载 - 但我不确定它会做什么。

我可以看到这非常...数据量很大,除非我可以实现一种方法,每个选项卡使用一次 ajax 代码。

即使使用 AJAX 代码,所有图像也会在“页面加载”时加载。我怎样才能防止这种情况发生?

【问题讨论】:

  • 唯一的问题是您想按需加载图像吗?只有当标签处于活动状态时才...您还使用引导选项卡吗? span>
  • 嗨@RajshekarReddy,这是正确的。我希望图像按需加载。我在这里阅读了一个问题,该问题在加载时将图像的 src 换出并在单击选项卡时放回原位
  • 我访问了你的网站,但是加载的图片太多了。仅图片需要 6-7 秒。此外,我觉得通过您的代码并建议您进行修复有点困难。相反,我做了一个小小提琴,您可以看一下并了解如何按需加载的总体思路。 jsfiddle.net/RajReddy/ka1m1t6n/3 看看这个,如果这有帮助,请告诉我..

标签: javascript jquery html ajax wordpress


【解决方案1】:

似乎没有触发 ajax。更改此代码。

jQuery(document).on( 'click', '.img.imgslide', function( event ) {

jQuery(document).on( 'click', 'img.imgslide', function( event ) {

.img 不是您代码中的类。

【讨论】:

  • 我不敢相信这是一个语法错误,哈哈。太感谢了!该页面仍然会加载所有图像,即使单击选项卡会重新加载它们。有没有办法让图像只通过 ajax 加载一次,并且在页面加载时不加载任何图像(标签图像除外)?
  • 不要在页面加载时加载图像。在页面加载时为空。能否贴一下load_gallary函数代码。
  • 错误控制台。未捕获的类型错误:无法读取未定义的属性“单击”
猜你喜欢
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多