【问题标题】:How can I switch urls for src, mouseover and mouseout - using jQuery如何切换 src、mouseover 和 mouseout 的 url - 使用 jQuery
【发布时间】:2023-03-07 16:42:01
【问题描述】:

我有大约 90 个商品的产品列表,其中包含 src、mouseover、mouseout 属性的图像。 基本上 mouseout src 与 image src 相同。 翻转工作正常,但我想翻转当前翻转功能。

例如:默认图像(悬停前)应该是当前的悬停图像,悬停图像(悬停时)应该是默认图像。

当前代码:

 <div class="item">
    <a href="productURL"class="product-image">
        <img id="product-collection-image"
            src="http://imageUrl-1xxxxxxxxx.jpg" alt="product name"
            onmouseover="this.src='http://imageUrl-over-1xxxxxxx.jpg';" 
            onmouseout="this.src='http://imageUrl-1xxxxxxx.jpg';" />
    </a>
 </div>

<div class="item">
    <a href="productURL"class="product-image">
        <img id="product-collection-image"
            src="http://imageUrl-2xxxxxxx.jpg" alt="product name"
            onmouseover="this.src='http://imageUrl-over-2xxxxxxx.jpg';" 
            onmouseout="this.src='http://imageUrl-2xxxxxxx.jpg';" />
    </a>
</div>

<div class="item">
    <a href="productURL"class="product-image">
        <img id="product-collection-image"
            src="http://imageUrl-3xxxxxxx.jpg" alt="product name"
            onmouseover="this.src='http://imageUrl-over-3xxxxxxx.jpg';" 
            onmouseout="this.src='http://imageUrl-3xxxxxxx.jpg';" />
    </a>
</div>

期望的结果:

 <div class="item">
    <a href="productURL"class="product-image">
        <img id="product-collection-image"
            src="http://imageUrl-over-1xxxxxxx.jpg" alt="product name"
            onmouseover="this.src='http://imageUrl-1xxxxxxxxx.jpg';" 
            onmouseout="this.src='http://imageUrl-over-1xxxxxxx.jpg';" />
    </a>
 </div>

<div class="item">
    <a href="productURL"class="product-image">
        <img id="product-collection-image"
            src="http://imageUrl-over-2xxxxxxx.jpg" alt="product name"
            onmouseover="this.src='http://imageUrl-2xxxxxxx.jpg';" 
            onmouseout="this.src='http://imageUrl-over-2xxxxxxx.jpg';" />
    </a>
</div>

<div class="item">
    <a href="productURL"class="product-image">
        <img id="product-collection-image"
            src="http://imageUrl-over-3xxxxxxx.jpg" alt="product name"
            onmouseover="this.src='http://imageUrl-3xxxxxxx.jpg';" 
            onmouseout="this.src='http://imageUrl-over-3xxxxxxx.jpg';" />
    </a>
</div>

这是我目前拥有的:

var items = $(".item a");
var imgSrc = items.children('img').map(function(){
    return $(this).attr('src');
}).get();

var hoverSrc = items.children('img').map(function(){
    return $(this).attr('onmouseover').slice();
}).get();

    console.log(hoverSrc);

提前谢谢各位。

【问题讨论】:

  • 您为什么要尝试使用 javascript 来执行此操作,而不是更改生成此标记的任何内容?
  • @Taplar 我只想为一个类别更改此功能,其他类别应保持默认。
  • 您不能在服务器端进行更改吗?
  • @Taplar 所有类别都是从 CMS 生成的,并且具有相同的代码。
  • 好吧,只是解决这个问题,:)

标签: jquery mouseevent src rollover


【解决方案1】:

$('.item .product-image img').each(function(index, image){
  //get the over logic
  var mouseover = image.getAttribute('onmouseover');
  //get the out logic
  var mouseout = image.getAttribute('onmouseout');
  
  //execute the over logic so it will change the src to be the over url
  image.onmouseover();
  //swap the over and out logic for each other
  image.setAttribute('onmouseover', mouseout);
  image.setAttribute('onmouseout', mouseover);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="item">
  <a href="productURL" class="product-image">
    <img id="product-collection-image" src="http://imageUrl-1xxxxxxxxx.jpg" alt="product name" onmouseover="this.src='http://imageUrl-over-1xxxxxxx.jpg';" onmouseout="this.src='http://imageUrl-1xxxxxxx.jpg';" />
  </a>
</div>

<div class="item">
  <a href="productURL" class="product-image">
    <img id="product-collection-image" src="http://imageUrl-2xxxxxxx.jpg" alt="product name" onmouseover="this.src='http://imageUrl-over-2xxxxxxx.jpg';" onmouseout="this.src='http://imageUrl-2xxxxxxx.jpg';" />
  </a>
</div>

<div class="item">
  <a href="productURL" class="product-image">
    <img id="product-collection-image" src="http://imageUrl-3xxxxxxx.jpg" alt="product name" onmouseover="this.src='http://imageUrl-over-3xxxxxxx.jpg';" onmouseout="this.src='http://imageUrl-3xxxxxxx.jpg';" />
  </a>
</div>

【讨论】:

  • 像魅力一样工作!非常感谢!
猜你喜欢
  • 2011-03-03
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多