jquery悬停列表项并在另一个div中显示图像,列表是动态的

Posted

技术标签:

【中文标题】jquery悬停列表项并在另一个div中显示图像,列表是动态的【英文标题】:jquery hover a list item and display image in another div, list is dynamic 【发布时间】:2017-11-04 13:33:31 【问题描述】:

我有一个 Wordpress 测试站点,并且正在使用一个插件来列出某个类别的最近帖子,以及帖子中的缩略图。我想更改它,以便列表中的每个项目在其旁边显示缩略图,只有悬停的项目在单独的 div 中显示其缩略图。

我喜欢我在 Shlomi Hassid 的 post here 找到的一个 jquery 解决方案。但是,我无法适应它,因为他使用的是静态图像和“数据图像”变量,这在我正在使用的列表中不存在。 (他举了一个小提琴的例子。)

看来我需要将 data-image 变量传递给 php 以使其工作,所以我尝试将其添加到 Hassid 的脚本中:

var htthumb = $(this).data('image');
    $.ajax(
        type: 'POST',
        url: 'http://testsite.humortimes.com/wp-content/plugins/recent-posts-widget-thumbs-mine/includes/widget.php',
        data: 'variable': htthumb,
    );

...并在 PHP 中添加了$htimgsrc = $_POST['htthumb'];

然后,在列表类中,在创建列表的 PHP 段之前添加data-image=$htimgsrc

<li class="ht-menu-item" data-image=$htimgsrc <?php

但结果只是显示了上面带有变量名的数据图像前缀,而不是我需要的源信息。

所以,我想我只是需要帮助将变量从 js 传递到 php,或者用一种完全不同的方式来做到这一点。

我正在处理的页面,在一个测试站点中,is here。

感谢您的帮助。

编辑:

我一直在重新考虑这一点。我真的只需要将附件图片url放在“data-image =”之后让js找到图片,所以我不需要像上面那样从js中获取变量。所以,在“有帖子”循环期间在插件中,我尝试使用wp_get_attachment_image( $thumb_id ) 获取图像 url,其中 $thumb_id 是插件中另一个 PHP 文件的变量,它正在获取缩略图的 id。这样​​,我想,我可以获得正确的图像。但是由于某种原因,这似乎返回 null。

欢迎任何想法。谢谢。

【问题讨论】:

请发布您正在处理的代码示例,并向我们展示您迄今为止尝试过的内容。参考***.com/help/asking 按要求进行编辑。 我一直在重新考虑这一点。我真的只需要缩略图URL,所以我不需要从js中获取它。但是我在 PHP 中尝试了一些到目前为止还没有奏效的东西。 【参考方案1】:

好的,放弃尝试从插件中获取图像附件信息(尽管这应该是可能的,因为在其原始形式中,它会在列表中的每个项目旁边提供缩略图;但我希望它在单独的 div,并且仅在将鼠标悬停在列表项上时)。我决定只需要用我自己的函数获取图像的 url。因此,我找到了一些有用的代码并对其进行了修改,将其插入循环中,并使用为 'data-image=' url 生成的 '$htthumb1' 变量:

if ( has_post_thumbnail() ) 
        the_post_thumbnail(); 
     else 
        // No post thumbnail, try attachments instead.
        $attachment = get_children(
        array(
            'post_parent'    => get_the_ID(),
            'post_type'      => 'attachment',
            'post_mime_type' => 'image',
            'order'          => 'DESC',
            'numberposts'    => 1,
        )
    );
    if ( ! is_array( $attachment ) || empty( $attachment ) ) 
        return;
    
    $attachment = current( $attachment );
    $htthumb1 = wp_get_attachment_thumb_url( $attachment->ID );
    ;

【讨论】:

以上是关于jquery悬停列表项并在另一个div中显示图像,列表是动态的的主要内容,如果未能解决你的问题,请参考以下文章

Jquery:在div的悬停时附加一个类并在不悬停时删除

如何使用jquery在div上显示div中的图像?

悬停时的图像播放视频并在完成时使用图像重置 div

JQuery - 图像的悬停事件在另一个图像后面

悬停 div 以在另一个 div 中显示更多内容

悬停图像 - 在其上显示 div