【问题标题】:jQuery hover effect on current element only仅对当前元素的 jQuery 悬停效果
【发布时间】:2017-05-31 06:46:46
【问题描述】:

我有一个包含图像的 Div 列表。当我将鼠标悬停在 div 上时,我希望图像向上移动(我通过在悬停时更改图像 css 来做到这一点)。我遇到的问题是,当我将鼠标悬停在一个 div 上时,所有 div 中的所有图像都在变化。相反,我希望悬停效果只发生在我悬停的 div 上。这是我当前的 jQuery:

jQuery(document).ready(function($){
  screenshotHeight = $('.l_admin-product-screenshot img').height(); 

  $('.l_admin-product').hover(function () {
    $('.l_admin-product-screenshot img').css({
      top: -screenshotHeight
    });
  },

                              function () {
    $('.l_admin-product-screenshot img').css({
      top: '0'
    });
  });

});

这是我的 html 结构:

<div class="l_admin-products">

<div class="l_admin-product" tabindex="0">
            <input name="layes-preset-layout" id="layers-preset-layout-skizzar-homepage-1-radio" class="l_admin-hide" type="radio" value="skizzar-homepage-2">
            <label for="layers-preset-layout-skizzar-homepage-1-radio">
                <input id="layers-preset-layout-skizzar-homepage-1-title" type="hidden" value="Splash Page">
                <input id="layers-preset-layout-skizzar-homepage-1-widget_data" type="hidden" value="">
                <div class="l_admin-product-screenshot">
                    <img src="http://demo.skizzar.com/wp-content/themes/pastorious/assets/preset-images/new_homepage21_w515.png" width="320" style="top: 0px;">                 </div>
                <h3 class="l_admin-product-name" id="skizzar-homepage-2">Splash Page</h3>
                <div class="l_admin-product-actions">
                    <a class="button button-primary customize load-customize" id="layers-generate-preset-layout-skizzar-homepage-1" data-key="layers-preset-layout-skizzar-homepage-1">
                        Select                      </a>
                </div>
            </label>
        </div>

<div class="l_admin-product" tabindex="0">
            <input name="layes-preset-layout" id="layers-preset-layout-skizzar-homepage-2-radio" class="l_admin-hide" type="radio" value="skizzar-homepage-2">
            <label for="layers-preset-layout-skizzar-homepage-2-radio">
                <input id="layers-preset-layout-skizzar-homepage-2-title" type="hidden" value="Splash Page">
                <input id="layers-preset-layout-skizzar-homepage-2-widget_data" type="hidden" value="">
                <div class="l_admin-product-screenshot">
                    <img src="http://demo.skizzar.com/wp-content/themes/pastorious/assets/preset-images/new_homepage2_w515.png" width="320" style="top: 0px;">                  </div>
                <h3 class="l_admin-product-name" id="skizzar-homepage-2">Splash Page</h3>
                <div class="l_admin-product-actions">
                    <a class="button button-primary customize load-customize" id="layers-generate-preset-layout-skizzar-homepage-2" data-key="layers-preset-layout-skizzar-homepage-2">
                        Select                      </a>
                </div>
            </label>
        </div>

<div class="l_admin-product" tabindex="0">
            <input name="layes-preset-layout" id="layers-preset-layout-skizzar-homepage-3-radio" class="l_admin-hide" type="radio" value="skizzar-homepage-3">
            <label for="layers-preset-layout-skizzar-homepage-3-radio">
                <input id="layers-preset-layout-skizzar-homepage-3-title" type="hidden" value="Splash Page">
                <input id="layers-preset-layout-skizzar-homepage-3-widget_data" type="hidden" value="">
                <div class="l_admin-product-screenshot">
                    <img src="http://demo.skizzar.com/wp-content/themes/pastorious/assets/preset-images/new_homepage3_w515.png" width="320" style="top: 0px;">                  </div>
                <h3 class="l_admin-product-name" id="skizzar-homepage-2">Splash Page</h3>
                <div class="l_admin-product-actions">
                    <a class="button button-primary customize load-customize" id="layers-generate-preset-layout-skizzar-homepage-3" data-key="layers-preset-layout-skizzar-homepage-3">
                        Select                      </a>
                </div>
            </label>
        </div>

</div>

【问题讨论】:

  • 也显示你的html
  • 请在示例中添加 html。
  • @L.Vadim 添加了 HTML - 现在正在整理中
  • 请脚本运行器
  • 我觉得$('.l_admin-product-screenshot img') 正在获取您的所有图像。不过我可能是错的。如果是问题,可以使用this 轻松解决。

标签: javascript jquery css hover


【解决方案1】:
$('.l_admin-product').hover(function () {
  $this = $(this);

  $this.find('.l_admin-product-screenshot > img').css({
    top: -screenshotHeight
  });
},function () {
  $this.find('.l_admin-product-screenshot img').css({
  top: '0'
  });
});

尝试使用$this 指向当前图像。

【讨论】:

  • 是的,这是可行的,尽管我如何找到悬停在 $this 图像上的高度(对于 screenshotHeight 的值)
  • @SamSlirrow - screenshotHeight = $this.find('.l_admin-product-screenshot > img').height();
猜你喜欢
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
相关资源
最近更新 更多