关于阻止冒泡和阻止事件默认行为的问题,在线等,挺急的!哪位大佬可以解释下吗?

问题出现的环境背景及自己尝试过哪些方法

尝试了e.stopPropagation()、e.preventDefault()和return false这三个方法但是,还是要跳转?

相关代码

html结构

    <a href="page.html">
        <span id="test-0">TEST</span>
        <i class="my-icon" onclick="testClose(0)">
    </a>

testClose()事件处理函数

function testClose(i,e) {
    // e.stopPropagation();
    // e.preventDefault();
    //e.stopPropagation();
    $('#test-'+i).parent().parent().remove()
    var addItemArr = sessionStorage.getItem("selectedItem")?$.parseJSON(sessionStorage.getItem("selectedItem")):[]
    addItemArr.splice(i,1)
    var addItemArr_dispose=[]
    addItemArr.forEach(element => {
        var x='"'+element+'"'
        addItemArr_dispose.push(x)
    });
    sessionStorage.setItem("selectedItem","["+addItemArr_dispose+"]")
    //return false
    e.stopPropagation();
    e.preventDefault();

}

你期待的结果是什么?

如何才能不让这个a标签跳转,在线等,挺急的

阅读 1.8k
3 个回答

写错了,事件没有传进去

<i class="my-icon" onclick="testClose(0, event)">

把a标签的href属性去掉,就可以看到网页提示的错误了

少侠你的a标签好像并未特殊处理啊。
testClose是监听a的子元素的。

少侠,可以通过js手动打开页面,如果这种需求,最快的是获取点击的元素,如果是a元素,调用window.open/location.href=xxx直接打开,如果是i元素,不做处理就好了,换个思路。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题