Javascript 如何使锚定标记内的跨度元素成为非锚定元素?

Javascript 如何使锚定标记内的跨度元素成为非锚定元素?,javascript,jquery,html,Javascript,Jquery,Html,我有一个锚定标签、一个跨度和一个嵌入锚定标签中的I元素- <a href="home.html" class="list-group-item" data-toggle="collapse" aria-expanded="false" style="padding-left: 30px;" id="id1"> <span id="id2" class="glyphicon glyphicon-eye-close" style=

我有一个锚定标签、一个跨度和一个嵌入锚定标签中的I元素-

<a href="home.html" class="list-group-item" data-toggle="collapse"
    aria-expanded="false" style="padding-left: 30px;" id="id1">
  <span
          id="id2" class="glyphicon glyphicon-eye-close"
          style="color: #d6d6d6 !important; font-size: 15px;" title="title1">
  </span> 
  <i class="glyphicon glyphicon-folder-close"></i>
  HOME 
</a>

当我单击I元素或span元素时,页面将按照我希望的方式重定向到home.html

但我不想在单击span元素时将页面重定向到home.html。相反,我希望为click事件使用不同的操作绑定span元素。我知道一个快速修复方法是将跨度置于锚定标签之外,但不幸的是,我不得不按照我的要求这样做。这有什么办法吗


任何帮助都将不胜感激。提前感谢。

您可以取消子元素的事件,以防止它冒泡到父元素

只需从单击事件返回false

<a href="home.html">
  <span onclick="return clickme();"> 
          CLICK ME
  </span> 
  <i class="glyphicon glyphicon-folder-close"></i>
  HOME 
</a>

jsfiddle:

请注意,取消活动可能会引发一场辩论;有关各种技术,请参见此线程


您可以取消子元素的事件,以防止它冒泡到父元素

只需从单击事件返回false

<a href="home.html">
  <span onclick="return clickme();"> 
          CLICK ME
  </span> 
  <i class="glyphicon glyphicon-folder-close"></i>
  HOME 
</a>

jsfiddle:

请注意,取消活动可能会引发一场辩论;有关各种技术,请参见此线程


您需要使用JavaScript来实现这一点。您可以将
单击
事件侦听器添加到
标记中。然后,在事件处理程序中,对click事件调用
.preventDefault()
,并重定向用户。大概是这样的:

document.querySelector('id2').addEventListener("click", function (e) {
    e.preventDefault();
    window.location = "http://example.com";
});

请注意,这违反了良好的语义(即,在处理SEO、屏幕阅读器和站点的其他非标准消费者时,您的里程可能会有所不同)。

为此,您需要使用JavaScript。您可以将
单击
事件侦听器添加到
标记中。然后,在事件处理程序中,对click事件调用
.preventDefault()
,并重定向用户。大概是这样的:

document.querySelector('id2').addEventListener("click", function (e) {
    e.preventDefault();
    window.location = "http://example.com";
});

请注意,这违反了良好的语义(即,在处理SEO、屏幕阅读器和站点的其他非标准消费者时,您的里程可能会有所不同)。

如果约束是在a元素中包含跨度,那么a元素是否具有href属性可能不是一个约束?在HTML中没有办法绕过它。如果你想引入JavaScript,有很多方法。如果您这样做,请在问题中添加相应的标记。也可以使用JavaScript。因此,我不相信你所做的是一个非常好的实践,但我还是回答了。如果约束是在a元素中包含span,那么a元素具有href属性可能不是一个约束?在HTML中没有办法绕过它。如果你想引入JavaScript,有很多方法。如果您这样做,请在问题中添加相应的标记。也可以使用JavaScript。我不相信你所做的是一个很好的练习,但我还是回答了。