我有以下JavaScript:
function MyMethod(func)
{
func();
}
$('#Btn').on('click', function(e)
{
e.preventDefault();
var form = $(this).parent();
MyMethod(form.submit);
});
http://codepen.io/chrisnicholson/pen/YGxOdJ
这不起作用,在Chrome中出现以下错误:
jquery.min.js:4未捕获的TypeError:无法读取未定义的属性'trigger'
如果我修改对MyMethod
的调用以使用以下内容,那么它可以正常工作:
MyMethod(function(){
form.submit();
});
http://codepen.io/chrisnicholson/pen/amyRXX
有人可以解释为什么会这样吗?
答案 0 :(得分:2)
啊,好的' this
在工作中的约束!如果您只提供方法,则不会在表单上调用它,而是在全局对象上调用,如
submit.call(window) // resp. undefined in strict mode. Hence the error, I guess.
你想要的是什么
submit.call(form)
解决此问题的一种方法:Bind将提交方法添加到表单中:
MyMethod(form.submit.bind(form));
答案 1 :(得分:0)
你的代码是。只需传递对象即可。
<?php
include('connect.php');
$result = $db->prepare("SELECT image FROM info WHERE empid= '". $empid ."'");
$result->bindParam('. $empid .', $empid);
$result->execute();
for($i=0; $rows = $result->fetch(); $i++){
echo '<img src="images/".$row["image"]." ">';
echo '<img src="images/".$row["image"]. > ' ;
}
?>
答案 2 :(得分:-1)
如果没有括号,.submit将只是您拥有的jQuery对象的属性。在这种情况下,您的表单。
添加括号实际上会在表单对象上调用.submit()方法。