什么是"回归虚假"; 做?

Dmi*_*tri 19 javascript ajax jquery

我写了一个网页,用户可以在其中输入存储在数据库中的日志条目,然后使用该页面检索和打印ajax.我还是很新,ajax并且想知道是否有人可以向我解释return false;在我的代码结尾处做了什么?甚至是必要的吗?

如果我return false在代码不起作用后放第二个ajax代码!你能解释一下为什么吗?

//handles submitting the form without reloading page 
$('#FormSubmit').submit(function(e) {
    //stores the input of today's data
    var log_entry = $("#LogEntry").val();
    // prevent the form from submitting normally
    e.preventDefault();

    $.ajax({
        type: 'POST',
        url: 'behind_curtains.php',
        data: {
            logentry: log_entry
        },
        success: function() {
            alert(log_entry);
            //clears textbox after submission
            $('#LogEntry').val("");
            //presents successs text and then fades it out
            $("#entered-log-success").html("Your Entry has been entered.");
            $("#entered-log-success").show().fadeOut(3000);
        }
    });
    //prints new log entries on page upon submittion
    $.ajax({
        type: 'POST',
        url: '/wp-content/themes/childOfFanwood/traininglog_behind_curtains.php',
        data: {
            log_entries_loop: "true"
        },
        success: function(data) {
            alert(data);
            $("#log-entry-container").html("");
            $("#log-entry-container").html(data);
        }
    });
    return false;
});
?
Run Code Online (Sandbox Code Playgroud)

gdo*_*ica 37

我在这里写的是jQuery事件的真实情况,
对于vanilla javascript事件,在答案的底部阅读@TJ Crowder评论


return false回调内部可以防止默认行为.例如,在某个submit事件中,它不提交表单.

return false 也停止冒泡,所以元素的父母不会知道发生的事件.

return false相当于event.preventDefault()+event.stopPropagation()

当然,return xxx行之后存在的所有代码都不会被执行.(和我所知道的所有编程语言一样)

也许你觉得这很有用:
停止事件冒泡 - 提高性能?


一个"真实"的演示讲解的区别return falseevent.preventDefault():

标记:

<div id="theDiv">
    <form id="theForm" >
        <input type="submit" value="submit"/> 
    </form>
</div>?
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

$('#theDiv').submit(function() {
    alert('DIV!');
});
$('#theForm').submit(function(e) {
    alert('FORM!');
    e.preventDefault();
});?
Run Code Online (Sandbox Code Playgroud)

现在......当用户提交表单时,第一个处理程序是表单提交,其中preventDefault()- >表单将不会被提交,但事件会冒泡到div,触发它的提交处理程序.

现场演示

现在,如果表单提交的处理程序将取消冒泡return false:

$('#theDiv').submit(function() {
    alert('DIV!');
});
$('#theForm').submit(function(event) {
    alert('FORM!');
    return false;   
    // Or:
    event.preventDefault(); 
    event.stopPropagation();
});?
Run Code Online (Sandbox Code Playgroud)

div甚至不知道有表格提交.

现场演示


return false在vanilla javascript事件中做了什么

从DOM2处理程序返回false( addEventListener)做什么都没有(没有阻止默认又不停止冒泡;从微软DOM2上下的处理程序(attachEvent),它可以防止默认值,但不起泡;从DOM0处理器(onclick="return ..."),它可以防止默认(假设你在属性中包含了返回)但没有冒泡;从jQuery事件处理程序中,它同时执行这两个操作,因为这是一个jQuery的东西.详细信息和实时测试 - TJ Crowder

  • @FrançoisWahl.反过来......`return false`执行`e.preventDefault(); + e.stopPropagation()`.所以,如果你想要他们两个,只需`return false`. (2认同)