4

有谁知道为什么我的 preventDefault 代码不起作用?return false 返回很好,但我的理解是这不是真正的“正确”方式?

 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);
        });
    }
4

4 回答 4

7

return false;preventDefaultstopPropagation. _

preventDefault停止对元素的“默认”操作,stopPropagation阻止事件冒泡到父元素。

我的猜测是,当你只做preventDefault.

于 2012-07-06T19:57:11.493 回答
3

return false一样。preventDefault()

事实上return false是以下的组合或简写

  • preventDefault()
  • stopPropagation()

所以尝试添加这个(连同e.preventDefault()):

e.stopPropagation();
于 2012-07-06T19:57:50.923 回答
2

有错别字,改一下:

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

到:

$('.voting').on('click', '.up', function(e){
于 2012-07-06T19:58:40.843 回答
0

只是为了完整性:

返回假
也触发
停止立即传播()
它取消了同一元素上的所有后续处理程序(在使用 touchend 事件时可能会派上用场,并且意味着取消后续点击)在此处阅读stopPropagation()event.stopImmediatePropagation()

之间的区别:jquery:stopPropagation 与 stopImmediatePropagation

于 2013-06-06T15:56:17.913 回答