更改帖子标题悬停时的图像(多个实例)-jQuery

时间:2020-05-10 作者:artist learning to code

我根据术语创建了一个帖子循环,每个术语都有一个块,如下所示:

-

术语标题

该学期一篇帖子的特色图片

该任期的所有职位列表

-

现在我用了3个术语,所以这个内容有3个区块。其思想是,当您悬停某个术语中某个帖子的标题时,特征图像将更改为悬停帖子中的图像。

这是(某种程度上)可行的,但当我悬停在帖子标题上时,所有图像都会发生变化,而不仅仅是它们所属的块中的图像。我认为这是因为我需要在Jquery中使用唯一ID而不是类,但我不知道如何将ID转换为Jquery(我正在学习在构建过程中编写代码)

PHP代码

//Loop throug each taxonomy terms, 
    foreach ( $terms as $term ) { 
        //Query argument for post
    $args = array( 
            \'post_type\' => \'technology\', // Or Custom Post Type, 
            \'order\' => \'DESC\', 
            \'orderby\' => \'date\',
            \'taxonomy\' => $tax,
            \'term\' => $term->slug, // Query posts for each term based on term slug
            \'orderby\' => \'date\',
            \'order\' => \'ASC\', 
        );
        $query = new WP_Query( $args ); 
        $posts = $query->get_posts();

        $cat_icon = get_term_meta( $term->term_id, \'category-icon\', true );
        $cat_iconUrl = ( ( $cat_icon != \'\' ) ? wp_get_attachment_url( $cat_icon ) : \'\' );

        ?>

<div class="container-fluid tech-cat-item py-5">
    <div class="container">
    <div class="row align-items-center pb-3">
    <div class="col-1">
    <img class="img-fluid" src="<?php echo $cat_iconUrl; ?>">
</div>
<div class="col-11">
    <h3><?php echo $term->name;?></h3>
</div>
</div>
<?php
       $ga_item = array(
            \'post_type\' => \'technology\', // Or Custom Post Type, 
            \'taxonomy\' => $tax,
            \'term\' => $term->slug, // Query posts for each term based on term slug
            \'posts_per_page\' => \'1\',
            \'orderby\' => \'date\',
            \'order\' => \'ASC\', 
);
       $ga_query = new WP_Query( $ga_item ); 
       $ga_posts = $query->get_posts();
    if ( $ga_query->have_posts() ) {
    while ( $ga_query->have_posts() ) {
$ga_query->the_post(); ?>
    <div class="row ga-panel py-5">
    <div class="col-12">
        <?php 
        $ga_url = get_the_post_thumbnail_url($post->ID,\'full\'); ?>
        <img id="<?php the_ID($post->ID); ?>" class="img-fluid ga-img" src="<?php echo esc_url($ga_url);?>">
    </div>
    </div>
<?php }
}
wp_reset_query();
?>
    <div class="row">
        <?php 
        if ( $posts ) {
         foreach ( $posts as $post ) { ?>
             <div class="col-4 ga-links py-1">
                <a id="<?php the_ID($post->ID); ?>" href="<?php the_permalink( $post->ID ); ?>" data-swap="<?php the_post_thumbnail_url($post->ID,\'full\'); ?>" > <?php echo $post->post_title; ?></a>
            </div>
         <?php        
            }
        }
       ?>
</div>
</div>
</div>
  <?php  }
 wp_reset_query();
?>

EDIT

我发现了如何在jquery中使用变量作为ID,但现在jquery只在第一个img实例上工作。无论我将鼠标悬停到哪个链接,图像都会发生变化,但在第一个图像。。。。

New Jquery代码:

jQuery(document).ready(function () {
jQuery(\'.ga-links a\').hover(function(){
    var id = jQuery(\'.ga-img\').attr("id");
        jQuery(\'#\' + id).attr(\'src\',this.getAttribute(\'data-swap\'));
         console.log(id);
});
})
(任何关于清理代码的建议,或更好的方法,我都很感激。我正在学习,这个奇怪的查询是我想要做的最好的方法,哈哈)

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

如果您使用当前术语作为选择器,因为每个术语只有一个特色图像和多个链接,我认为您可以使用代码。

例如,首先将术语添加到图像类,

<img class="img-fluid ga-img ga-img-<?php echo $term->slug; ?>" src="<?php echo esc_url($ga_url);?>">
然后将该术语添加到每个帖子链接中,

<a href="<?php the_permalink( $post->ID ); ?>" data-swap="<?php the_post_thumbnail_url($post->ID,\'full\'); ?>" data-term="<?php echo $term->slug; ?>" >
    <?php echo $post->post_title; ?>
</a>
现在您应该能够在jQuery中使用这个术语作为选择器,

jQuery(document).ready(function () {

  jQuery(\'.ga-links a\').hover(function() {
    var currentTerm = jQuery(this).data(\'term\'),
        swapImage = jQuery(this).data("swap");
    jQuery(\'.ga-img-\' + currentTerm).attr(\'src\', swapImage);      
  });

});

相关推荐

在定制的HTML块中使用短码结果(使用Google Sheet JQuery结果作为NumScroller数据-max)

在创建了一个获取google工作表数据的短代码,然后使用JQuery插件(numscroll)工作,使数字在显示时向上滚动到某个数字之后,我很难将这两个解决方案组合成一个“自定义HTML块”。这就是我想做的:<h2 class=\"has-text-align-center\"><strong> <span class=\"numscroller\" data-min=\"1\" data-max=[get_sheet_value location=\"\'