javascript - event.preventDefault 与 event.stopPropagation

标签 javascript jquery preventdefault stoppropagation

<分区>

谁能解释一下 event.preventDefault()event.stopPropagation() 之间的区别?

我有一个表,在该表中我有一个 img 标签。

当我点击 img 标签时,我想看到一个弹出窗口。

但是我也想停止多行的选择,所以我使用:

$("table.items tbody tr").click(function(event) {
        event.stopPropagation();
    });

当我使用js代码时,弹窗没有出现;

如果我删除 js 代码,弹出窗口会工作。

$(".info").live("click",function(e){
    //console.log('ok');
    e.stopPropagation();
    var elem = $(this);
    var id = $(this).attr("id").replace("image_","container_");
    $('#'+id).toggle(100, function() {
        if($(this).css('display') == 'block') {
            $.ajax({
                url: "$url",
                data: { document_id:elem.attr('document_id') },
                success: function (data) {
                    $('#'+id).html(data);
                }
            });
            }
        });
});

为什么?

最佳答案

我不是 Javascript 专家,但据我所知:

stopPropagation用于确保事件不会在链中冒泡。例如。点击 <td>标签还会在其父标签上触发点击事件 <tr> ,然后是它的父级 <table>stopPropagation防止这种情况发生。

preventDefault用于停止元素的正常 Action ,例如。 preventDefault在链接上的点击处理程序中会停止跟踪链接,或者在提交按钮上会停止提交表单。

关于javascript - event.preventDefault 与 event.stopPropagation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18147242/

相关文章:

javascript - 如何解决由于多个 jQuery 文件导致的多次回发问题?

jquery - CSS border-image 负偏移(无 HTML 版本)

javascript - 使用javascript查找文本 block 中以 `icon-`开头的每个元素的索引位置

javascript - event.preventDefault() 和 event.returnValue = false 在 Firefox 中都不起作用

javascript - POST 表单提交后使用 Javascript 返回函数

javascript - 计算谷歌地图街景的滚动 Angular

javascript - 计数器不根据功能改变颜色

javascript - Android 的某种 JavaScript 的 preventDefault

javascript - 为什么 AngularJS 不在它的 isArray 函数中使用 instanceof?

javascript - 为什么我的 CoffeeScript 类 'see' 中的函数不能是其他函数?