Javascript 如何使锚定标记内的跨度元素成为非锚定元素?
我有一个锚定标签、一个跨度和一个嵌入锚定标签中的I元素-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=
<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。我不相信你所做的是一个很好的练习,但我还是回答了。