选择除了一个以外的所有元素,jQuery中的子元素在Safari中不起作用

时间:2018-06-15 17:51:17

标签: javascript jquery html

我想做的事情很简单。我想让整个部分可以点击,除了跨度和下面的所有内容,因为我希望链接在其他地方重定向。

<section id="id" class="message">
 <div class="message_body">
  <font color="color">text</font>
   <span style="style">
      <a href="url">
        <img src="linktoimage"></img>
      </a>
   </span>
   <br></br>
   <text name="message_comment" id="message_comment">message</text>
 </div>
</section>

我尝试过以下方法:

$('.message:not(span)').click(function() {
  window.location.href = "url";
});

$(".message").not("span").click(function() {
  window.location.href = "url";
});

Chrome和Firefox中的行为都是正确的。但在Safari中,a href链接不起作用。在html中呈现它时它被视为一个链接,但当你点击它时,处理整个类的jQuery行为就会开始,好像它忽略了“不跨越”。无论如何重写这个在Safari,Chrome和Firefox中工作还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可以定位范围,这样如果他们点击它,点击事件就不会继续冒泡。

&#13;
&#13;
$('.message').on('click', function(){
  console.log( 'yeah!' );
});

$('.message span').on('click', function (e) {
  console.log( 'denied!' );
  //stop the event from bubbling up out of the span to the parent elements
  e.stopPropagation();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="message">
  <span>Click Me!</span>
  <div>Other Stuff</div>
</div>
&#13;
&#13;
&#13;