【问题标题】:I only want to click on a div without clicking the link in a div我只想点击一个div而不点击一个div中的链接
【发布时间】:2018-09-20 03:41:53
【问题描述】:

请我尝试单击 div(标记)而不单击链接。我已将链接设置为 jquery cdn,但是当我单击它时,我只希望 div(外部)显示以显示块而不转到链接。我的代码如下。当我点击右下角的圆圈时。它将在父 div 的中心显示一个大标记。但随后它会转到我不想要的链接。

$(".news-box").click(function() {
  window.location = $(this).find("a").attr("href");
  return false;
});
$(".news-box").mouseenter(function() {
  $(".circle").css("display", "block");
}).mouseleave(function() {
  $(".circle").css("display", "none");
});
$(".circle").on("click", function() {
  $(".outer").css("display", "block");
});
img {
  width: 100px;
  height: 94px;
  text-align: center;
  vertical-align: top;
  position: relative;
  top: 7px;
  left: 10px;
}

.news-box {
  width: 350px;
  height: 100px;
  border: 3px solid red;
  position: relative;
}

.img-box {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
}

.news-descript {
  margin-top: 15px;
}

a {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  bottom: 0;
  right: 0;
  cursor: pointer;
}

a:-webkit-any-link {
  color: -webkit-link;
  cursor: pointer;
  text-decoration: underline;
}

.circle {
  width: 22px;
  height: 22px;
  background-color: rgba(13, 16, 18, 0.5);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background-color 1s linear;
  position: absolute;
  bottom: 0;
  right: 0;
  z-index: 4;
  display: none;
}

.circle:hover {
  background-color: rgba(13, 16, 18, 1.0);
}

.mark {
  border-right: 3px solid white;
  border-bottom: 3px solid white;
  transform: rotate(45deg);
  background-color: transparent;
  width: 7px;
  height: 15px;
  position: relative;
  left: 6px;
  top: 2px;
}

.black {
  width: 350px;
  height: 100px;
  background: rgba(0, 0, 0, 0.5);
}

.big-mark {
  border-right: 5px solid white;
  border-bottom: 5px solid white;
  transform: rotate(45deg);
  width: 30px;
  height: 90px;
  margin: auto;
}

.outer {
  top: -3px;
  right: -3px;
  position: absolute;
  z-index: 3;
  display: none;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="news-box">
  <a href="https://code.jquery.com/"></a>
  <div class="circle">
    <div class="mark"></div>
  </div>
  <div class="outer">
    <div class="black">
      <div class="big-mark">

      </div>
    </div>
  </div>
  <div class="inside">
    <div class="row">
      <div class="col-xs-4 position one">
        <div class="img-box">
          <img src="https://preview.ibb.co/gJaSjx/timi_small.jpg">
        </div>
      </div>
      <div class="col-xs-8">
        <div class="news-descript">
          <p>Pellentesque in ipsum id orci porta dapibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
        </div>
      </div>
    </div>
  </div>
</div>

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    您根本不必将&lt;a&gt; 用作参考。

    JS

    $(".news-box").click(function() {
          window.location = $(this).attr("data-href"); 
          return false;    
    });
    

    HTML

    <div class="news-box" data-href="https://code.jquery.com/">
    

    【讨论】:

      【解决方案2】:

      在您的代码中删除此 。它正在运行,因为在刷新页面时它将触发链接。我删除了链接,一切正常。

      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div class="news-box">
              <div class="circle">
                  <div class="mark"></div>
              </div>
              <div class="outer">
                  <div class="black">
                      <div class="big-mark">
      
                      </div>
                  </div>
              </div>
              <div class="inside"> 
                  <div class="row">
                      <div class="col-xs-4 position one">
                          <div class="img-box">
                              <img  src="https://preview.ibb.co/gJaSjx/timi_small.jpg" >
                          </div>
                      </div>
                      <div class="col-xs-8">
                          <div class="news-descript">
                              <p>Pellentesque in ipsum id orci porta dapibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
                          </div>  
                      </div>
                  </div>  
              </div>
          </div> 
      

      【讨论】:

      • 请问我应该放什么来代替这个
      • 取决于你想要达到的目标
      【解决方案3】:

      快速修复: 将 e 参数传递给您的事件侦听器,以便您可以在其上调用 preventDefault 方法。

      如果你不使用链接,为什么不删除它?

      $(".news-box").click(function(e) {
        e.preventDefault();
      });
      $(".news-box").mouseenter(function() {
          $(".circle").css("display", "block");
      }).mouseleave(function() {
          $(".circle").css("display", "none");
      });
      $(".circle").on("click", function() {
      	$(".outer").css("display", "block");
      });
      		img {
      			width: 100px;
      			height: 94px;
      			text-align: center;
      			vertical-align: top;
      			position: relative;
      			top: 7px;
          		left: 10px;
      		}
      		.news-box {
      			width: 350px;
      			height: 100px;
      			border: 3px solid red;
      			position: relative;
      
      		}
      		.img-box {
      			display: flex;
      			align-items: center;
      			justify-content: center;
      			width: 80px;
      			height: 80px;
      		}
      		.news-descript {
      			margin-top: 15px;
      			
      		}
      		a {
      			position: absolute;
      			top:0;
      			left:0;
      			z-index: 1;
      			bottom: 0;
      			right:0;
      			cursor: pointer;
      		}
      
      		
      		a:-webkit-any-link {
      		    color: -webkit-link;
      		    cursor: pointer;
      		    text-decoration: underline;
      		}
      		.circle {
      			width: 22px;
      			height: 22px;
      			background-color: rgba(13, 16, 18, 0.5);
      			border-radius: 50%;
      			display: flex;
      			align-items: center;
      			justify-content: center;
      			transition: background-color 1s linear; 
      			position: absolute;
      			bottom:0;
      			right:0;
      			z-index: 4;
      			display: none;
      		}
      		.circle:hover {
      			background-color: rgba(13, 16, 18, 1.0);
      		}
      		.mark {
      			border-right: 3px solid white;
      			border-bottom: 3px solid white;
      			transform: rotate(45deg);
      			background-color: transparent;
      			width: 7px;
      			height: 15px;
      			position: relative;
      			left: 6px;
      			top: 2px;
      		}
      		.black {
      			width: 350px;
      			height: 100px;
      			background: rgba(0, 0, 0, 0.5);
      		}
      		.big-mark {
      			border-right: 5px solid white;
      			border-bottom: 5px solid white;
      			transform: rotate(45deg);
      			width: 30px;
      			height: 90px;
      			margin: auto;
      			
      		}
      		.outer {
      			top: -3px;
      			right: -3px;
      			position: absolute;
      			z-index: 3;
      			display: none;
      		}
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div class="news-box">
      		<a href="https://code.jquery.com/"></a>
      		<div class="circle">
      			<div class="mark"></div>
      		</div>
      		<div class="outer">
      			<div class="black">
      				<div class="big-mark">
      					
      				</div>
      			</div>
      		</div>
      		<div class="inside"> 
      			<div class="row">
      				<div class="col-xs-4 position one">
      					<div class="img-box">
      						<img  src="https://preview.ibb.co/gJaSjx/timi_small.jpg" >
      					</div>
      				</div>
      				<div class="col-xs-8">
      					<div class="news-descript">
      						<p>Pellentesque in ipsum id orci porta dapibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      					</div>	
      				</div>
      			</div>	
      		</div>
      	</div>

      【讨论】:

      • 绝对是这个问题难以理解的原因。如果您不使用链接,为什么它在那里?我读了几十遍才能理解,但我不确定我是否理解。你想去点击新闻框的链接,点击你想显示复选标记的圆圈?或者你想在点击不重要的地方显示复选标记?
      • cr8code.co/editor.php?workid=3fc1d56f7780cbf6a5d2e16c55201c7a 是单击圆圈检查或单击任意位置并转到链接的示例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 2021-09-08
      • 2013-03-27
      • 1970-01-01
      相关资源
      最近更新 更多