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

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

尝试了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标签跳转,在线等,挺急的

已解决 悬赏分:30 - 解决时间 2021-11-26 16:04
反对 0举报 0 收藏 0

回答3

最佳
  • @

    写错了,事件没有传进去

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

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

    支持 0 反对 0 举报
    2021-11-26 09:23
  • @

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

    支持 0 反对 0 举报
    2021-11-26 09:42
  • @

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

    支持 0 反对 0 举报
    2021-11-26 11:20