如何防止jQuery.load()返回" undefined"网址是什么?

时间:2017-08-30 13:29:21

标签: javascript jquery html wordpress

我目前正在Wordpress网站上的一个图库页面上工作,点击图库链接会通过jQuery load()函数从永久链接中获取图片。

然而,在重复点击所有图库链接的同时,有时候图像根本不会加载,即使其他尝试成功也是如此。当我查看控制台时,我发现下面jQuery函数中的某个地方可能会返回一个" undefined"在网址中,导致404错误。

HTML:

<article class="post">
    <a href="#" data-href="<?php the_permalink(); ?>" class="meta">
    <p>
        <span class="category"><?php foreach((get_the_category()) as $category) { echo $category->cat_name . ' '; } ?></span>
        <span class="title"><?php echo get_the_title(); ?></span>
    </p>
    </a>
</article>

JS:

$("#gallery").fadeIn(function() {
    var permalink = $(event.target).attr("data-href");

    $(this).append("<div class='slides'></div>")
    $("#gallery .slides").delay(1000).load( permalink + " img", function() {

        $("#gallery .slides img").wrap("<div class='slide'></div>");

        $(".slide").each(function() {
            var src = $(this).find("img").attr("src");
            $(this).css({
                "background": "url(" + src + ")"
            });
            $(this).empty();
        });

        $('.slides').anyslider();

    });
});

现场演示:trivecs.com/work

截图: enter image description here

2 个答案:

答案 0 :(得分:1)

永久链接未定义,因为它在#gallery fadeIn事件的范围内,将其移到外面并且您将不会遇到麻烦:

$(document).on('click', ".page-id-5 .post .meta", function(event) {
var permalink = $(this).data("href"); // move it here
$("#gallery").fadeIn(function() {
    //var permalink = $(event.target).attr("data-href");

答案 1 :(得分:0)

的问题

  • event未定义
  • event.target可能不是您想要的元素。

溶液

您不想在点击活动的a.meta链接上执行此操作吗?

$("a.meta").click(function() {
    var permalink = $(this).attr("data-href");

    $('#gallery').append("<div class='slides'></div>")
    $("#gallery .slides").delay(1000).load( permalink + " img", function() {

        $("#gallery .slides img").wrap("<div class='slide'></div>");

        $(".slide").each(function() {
            var src = $(this).find("img").attr("src");
            $(this).css({
                "background": "url(" + src + ")"
            });
            $(this).empty();
        });

        $('.slides').anyslider();

    });
});