我有一个函数foo(peram)
,我想从多个jquery .keyup()
事件中调用它。
如何定义/传递函数foo
以便我可以从事件内部调用它?
我试过这样的事情:
function foo(peram) {
alert(peram);
}
$("#someElement").keyup(function(alert) {
foo("You pressed a key!");
});
但是我得到TypeError: foo is not a function
。
我已经删除了我的脚本和HTML中的所有内容,但它仍无效。
HTML:
<html>
<head>
<script src="../jquery-1.10.2.js" type="text/javascript"></script>
<script src="test.js" type="text/javascript"></script>
</head>
<body onload="asdf()">
<input type="text" name="name">
</body>
</html>
test.js :
function asdf() {
function hqxftg(stuff) {
alert(stuff);
}
$(document).ready(function() {
$('[name="name"]').keyup(function(hqxftg) {
alert(typeof hqxftg)
hqxftg("asdf");
})
})
}
出于某种原因,似乎在jsfiddle中工作。
答案 0 :(得分:2)
这是因为您已将事件参数命名为与函数
相同的参数function asdf() {
function hqxftg(stuff) {
alert(stuff);
}
$(document).ready(function () {
$('[name="name"]').keyup(function (event) {
alert(typeof hqxftg)
hqxftg("asdf");
})
})
}
事件回调keyup
接收事件对象作为第一个参数,您将其命名为hqxftg
,它将覆盖外部范围的函数名称。
此外,无需使用onload=""
,您只需使用dom ready回调
jQuery(function ($) {
function hqxftg(stuff) {
alert(stuff);
}
$('[name="name"]').keyup(function (event) {
alert(typeof hqxftg)
hqxftg("asdf");
})
})
答案 1 :(得分:1)
你错过了几件事......
1)在调用foo()
结束时,你错过了;
2)您缺少关闭jQuery选择器的标签
当你尝试这个时它会起作用:
function foo(peram) {
alert(peram);
}
$("#someElement").keyup(function(alert) {
foo("You pressed a key!");
});
更新:帖子已更新,我的原始评论已过时。 我会赞同Derek的评论。
我能够重现这个问题:JSFiddle
您是否也将foo
声明为var?
答案 2 :(得分:0)
试试这段代码。 HTML
<input id="someElement" />
Java脚本:
function foo(peram) {
alert(peram);
}
$( document ).ready(function() {
$("#someElement").keyup(function() {
foo("You pressed a key!");
});
});