我有一个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 页面继续运行单击事件的其他代码。
为简单起见,这是有效的(执行已正确停止(:
$("#myButton").click(function() {
return false;
other code here...
}
这不起作用(执行提交(:
$("#myButton").click(function() {
my_external_function();
other code here...
}
外部JS文件的内容现在是:
function my_external_function() {
return false;
}
简单地从内部函数返回 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
}
})