在本地Javascript之后运行的外部Javascript

时间:2018-06-01 12:24:46

标签: javascript jquery

我有一个PHP页面,里面有一些Javascript / Jquery代码。

我有这样的事情:

$("#myButton").click(function() {

    my_external_function();

    other code here...
}

但my_external_function(包含在外部js文件中)似乎在本地代码之后运行。实际上,my_external_function中包含的“return false”将被忽略,并继续执行其他本地代码。

我错了什么?

请注意,如果我尝试在本地页面内复制my_external_function的内容,一切正常。

感谢任何建议,谢谢!

只是为了澄清,即使我清空外部函数并且我留下一行(RETURN FALSE指令),这也会被忽略,并且PHP页面继续运行click事件的其他代码。

为简单起见,这可行(正确停止执行):

$("#myButton").click(function() {

    return false;

    other code here...
}

这不起作用(执行提交):

$("#myButton").click(function() {

    my_external_function();

    other code here...
}

外部js文件的内容现在是:

function my_external_function() {
    return false;
}

1 个答案:

答案 0 :(得分:0)

简单地从内部函数返回false不会停止执行调用函数。这段代码:

$("#myButton").click(function() {
    my_external_function();
    // other code here...
}

function my_external_function() {
    return false;
}

相当于:

$("#myButton").click(function() {
    false;   
    // other code here... (will run)
}

等同于:

$("#myButton").click(function() {
    return false;  
    // other code here... (unreachable)
}

(请注意,在第二个示例中,return true也将停止执行单击处理程序;一旦函数返回,该函数就完成了。如果您之后有无法访问的代码,许多代码编辑器会将其标记为错误一个return声明。)

如果你想要"其他代码在这里"永远不会运行,你可以使用return my_external_function()。如果您希望它有条件地运行my_external_function()是返回true还是false,那么您可以

$("#myButton").click(function() {
    if (my_external_function()) {
      // other code here
      return true; // if necessary
    } else {
      return false; // if necessary
    }
})