javascript - 给已通过js点击显示的图片添加href链接

标签 javascript jquery html

类似于我最近问的一个问题,但之前的问题是使用鼠标悬停,所以对于触摸屏来说是垃圾。

这是 3 个带有图像的 div。单击时,它们分别更改为第二个图像并将其他 2 个重置为标准图像。一切正常。

但是当任何 div 中的第二个图像处于事件状态时,我希望能够单击此图像并导航到不同的页面。

明明在 html 中添加 href 只是导航,忽略了 JS 效果。

感谢阅读。

$(document).ready(function(){
     $('#s1').click(function(){
         $('#s1').attr('src', 'images/object/click-1.png');
          $('#s2').attr('src', 'images/object/standard-2.jpg');
           $('#s3').attr('src', 'images/object/standard-3.jpg');
     });
     $('#s2').click(function(){
         $('#s1').attr('src', 'images/object/standard-1.jpg');
          $('#s2').attr('src', 'images/object/click-2.png');
           $('#s3').attr('src', 'images/object/standard-3.jpg');
     });
     $('#s3').click(function(){
          $('#s1').attr('src', 'images/object/standard-1.jpg');
           $('#s2').attr('src', 'images/object/standard-2.jpg');
            $('#s3').attr('src', 'images/object/click-3.png');
     });


});


<div id="section3" class="container-fluid" align="center">
    <div class="row row-centered ">

    <div id="top-box-1" class="col-sm-4"> 
    <img src="images/object/standard-1.jpg" class="std" id="s1" width="300" height="300"/>
    </div>


    <div id="top-box-2" class="col-sm-4">
    <img src="images/object/standard-2.jpg" class="std "id="s2" width="300" height="300"/>
    </div>


    <div id="top-box-3" class="col-sm-4">
    <img src="images/object/standard-3.jpg" class="std" id="s3" width="300" height="300"/>
    </div>

 </div>
</div>

最佳答案

您可以查看 src 现在是否包含“click”。如果不是,则交换 srcreturn false 以停止 href:-

$('#s1').click(function(e) {
  if (!$(this).is('[src*="click"]')) {
    $('#s1').attr('src', 'images/object/click-1.png');
    $('#s2').attr('src', 'images/object/standard-2.jpg');
    $('#s3').attr('src', 'images/object/standard-3.jpg');
    return false;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="section3" class="container-fluid" align="center">
  <div class="row row-centered ">

    <div id="top-box-1" class="col-sm-4">
      <a href="http://stackoverflow.com/">
        <img src="images/object/standard-1.jpg" class="std" id="s1" width="300" height="300" />
      </a>
    </div>


    <div id="top-box-2" class="col-sm-4">
      <a href="http://stackoverflow.com/">
        <img src="images/object/standard-2.jpg" class="std " id="s2" width="300" height="300" />
      </a>
    </div>


    <div id="top-box-3" class="col-sm-4">
      <a href="http://stackoverflow.com/">
        <img src="images/object/standard-3.jpg" class="std" id="s3" width="300" height="300" />
      </a>
    </div>

  </div>
</div>

要分解它:if (!$(this).is('[src*="click"]')) {

$(this).is 允许您根据选择器检查 this,如果是,则返回一个 bool 值 (true)。

'[src*="click"]' 是判断src属性是否包含'click'的选择器。 * 表示包含任何地方。还有其他组合,如 ^= 开头。

因此 $(this).is('[src*="click"]') 如果 src 有“点击”,则表示为真。但是您需要将其反转为包含。这就是 ! 的用途,意思是如果 this(被点击的元素)在 src 中没有得到“点击”。

关于javascript - 给已通过js点击显示的图片添加href链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36939331/

相关文章:

javascript - 自动调整所有屏幕的弹出框

javascript - Ext js网格透视

javascript - 如何将 JSON 对象与保留追加(而不是覆盖)模式的属性结合起来?

javascript - 覆盖YouTube的恢复播放功能?

html - 均匀间隔 child ,但右对齐 parent 与 flex

javascript - 如何根据特定区域设置对 JavaScript 中的字符串进行排序或比较?

jquery - 无法使平面 ui 标签正常工作

javascript - 返回带有验证错误的 Ajax.BeginForm 时隐藏按钮。如何?

html - div 内的响应式垂直居中元素

javascript - 删除特定宽度的div/iframe