我有一个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;
}
答案 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
}
})