Javascript 为什么preventDefault不起作用但返回false起作用

Javascript 为什么preventDefault不起作用但返回false起作用,javascript,html,ajax,jquery,Javascript,Html,Ajax,Jquery,有人知道为什么我的默认代码不起作用吗?返回错误返回很好,但据我所知,这不是真正的“正确”方式 if ($('.signup').length == 0) { $('.star').on('click',function(e){ e.preventDefault(); var starElement = $(this); var resourceId = starElement.parents('li').d

有人知道为什么我的默认代码不起作用吗?返回错误返回很好,但据我所知,这不是真正的“正确”方式

 if ($('.signup').length == 0) {
        $('.star').on('click',function(e){
            e.preventDefault();
            var starElement = $(this);
            var resourceId = starElement.parents('li').data('id');

            updateFavoritesSpan( starElement, starElement.hasClass('starred') );

            starElement.toggleClass('starred');
            starElement.parents('li').toggleClass('fvtd');
        });
        // voting
        $('.voting').on('click .up', function(e){
            e.preventDefault();
            sendVote($(this), 1);
        });

        $('.voting').on('click', '.down', function(e){
            e.preventDefault();
            sendVote($(this), -1);
        });
    }
返回false;执行preventDefault和StopperPropagation

preventDefault停止元素上的默认操作,StopperPropagation停止事件向上冒泡到父元素

我的猜测是,当您仅执行preventDefault时,父级上仍会触发一个事件。

返回false与preventDefault不同

事实上,return false是以下内容的组合或简称:

防止违约 停止传播 因此,请尝试将其与e.preventDefault一起添加:


如果有输入错误,请更改此项:

$('.voting').on('click .up', function(e){
致:

为了完整起见: return false 当处理touchend事件并意味着取消后续单击时,取消同一元素上所有后续处理程序的触发器可能会派上用场 stopImmediatePropagation() 在此阅读StopRopagation和event.stopImmediatePropagation之间的区别:

你能详细说明一下它不起作用吗?这些是什么样的元素?这与ajax有什么关系?对于所有浏览器还是某些浏览器?它们是锚定链接。单击它们时,它将跟随链接。这些是ajax请求,因此它们不应遵循可能重复的链接 return false stopImmediatePropagation()