【问题标题】:jquery li a click img src replace (not togggle)jquery li a click img src replace (not toggle)
【发布时间】:2018-02-26 15:39:16
【问题描述】:

$(function() {

  $("#gnb li a").on("click", function() {
    $(this).find("img").attr("src", $(this).find("img").attr("src").replace("normal.svg", "press.svg"));
  });
  //not working
});
#gnb {
  position: absolute;
  bottom: 0px;
  left: 0px;
  width: 100%;
  height: 49px;
  background-color: #fff;
  padding-bottom: 5px;
  border-top: 1px solid #ddd;
}

#gnb li {
  position: absolute;
  top: 0px;
  width: 20%;
}

#gnb li:nth-of-type(1) {
  left: 0%
}

#gnb li:nth-of-type(2) {
  left: 20%
}

#gnb li:nth-of-type(3) {
  left: 40%;
  top: -15px;
}

#gnb li:nth-of-type(3) img {
  background-color: #fff;
  border-radius: 100%;
  border: 1px solid #ddd;
  box-sizing: border-box;
}

#gnb li:nth-of-type(4) {
  left: 60%
}

#gnb li:nth-of-type(5) {
  left: 80%
}

#gnb li a {
  display: block;
  text-align: center;
  line-height: 49px;
}

#gnb li a img {
  vertical-align: middle;
  max-width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<ul id="gnb">
  <li>
    <a href="../contents/shops.html"><img src="../images/gnb_btn1_normal.svg" alt="coupon"></a>
  </li>
  <li>
    <a href="../contents/history.html"><img src="../images/gnb_btn2_normal.svg" alt="useage"></a>
  </li>
  <li class="home">
    <a href="../contents/meal_tickets.html"><img src="../images/gnb_home_normal.svg" alt="home"></a>
  </li>
  <li>
    <a href="../contents/settings.html"><img src="../images/gnb_btn3_normal.svg" alt="setting"></a>
  </li>
  <li>
    <a href="../contents/information.html"><img src="../images/gnb_btn4_normal.svg" alt="info"></a>
  </li>
</ul>

li>点击一下,每个img src替换-我要 但无法使用此代码。 有什么问题?

【问题讨论】:

  • 必须是基于href的重定向
  • 因为每个超链接都有“href”,所以它会重定向到页面而不是更改图像,你到底想要什么?
  • 我要href改好,img改好..
  • 这是因为您的 .replace("normal.svg", "press.svg") 是准确的单词。您需要的是一个正则表达式,因为您的图像名称也包含 ../images/gnb_btn1_ 部分。
  • 是否需要href?

标签: jquery image replace click src


【解决方案1】:

试试这个:

$('#gnb li a').on('click', function(e) {
    e.preventDefault();
    $(this).find('img').attr('src').replace('../images/gnb_btn2_normal.svg', '../images/gnb_btn2_press.svg'));
});

编辑: 也增加了对 href 的支持

$('#gnb li a').on('click', function(e) {
    e.preventDefault();
    $(this).find('img').attr('src').replace('../images/gnb_btn2_normal.svg', '../images/gnb_btn2_press.svg'));
    $(this).attr('href', 'press'));
});

【讨论】:

  • 所以,你需要两行。我编辑我的答案。但不确定我是否理解不足!你会把那个 href 转到另一个页面吗?
  • 是的,href 将转到另一个页面,并且 img src 也会替换。
  • 所以,您不能转到另一个页面并在此更改图像。因为重新加载后一切都被重置!除非您在新标签/窗口中加载页面!
  • 所以,如果我明白了,你想做的是为每个已经访问过的页面更改图像?
猜你喜欢
  • 2021-02-06
  • 2010-12-22
  • 2018-10-28
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多