我在jquery中有一个函数:
$('#map').click(function(e) {
var posX = $(this).offset().left, posY = $(this).offset().top;
if (posY < 100) {
// do this
当用户点击该元素时,它将运行。但是如果按下光标键,我也想让它运行。
是否可以执行以下操作:
$('#map').click OR key.press(function(e) {
基本上,您可以设置多个事件来运行该功能吗? 只是学习jquery所以对我来说很容易。
function move(e) {
var posX = $(this).offset().left, posY = $(this).offset().top;
if (posX > 75 && posX < 150 && posY < 75) { var go = "N"; }
if (e.which == 38) { var go = "N"; }
$.post("inc_map.php", { move: go }, function(data){
var substr = data.split('@');
if (substr[0] != "block") {
var x1 = substr[0]; var y1 = substr[1];
x = parseInt(x1) * 32; y = parseInt(y1) * 32;
$("#mapview").css({ backgroundPosition: -x + "px " + -y + "px" });
$("#map").html(substr[2]);
$("#info").html(substr[3]);
};
$("#pos").html((x/32) + ', ' + (y/32));
});
};
$("#map").click(move).keypress(move);
为什么这不起作用? :○
答案 0 :(得分:2)
您在事件处理程序之外定义了一个函数,然后分别从每个处理程序中调用它。
function myFunc(e) {
var posX = $(this).offset().left, posY = $(this).offset().top;
if (posY < 100) {
}
// if e.which equals 38, the up arrow was pressed
if(e.which == 38) {
// do nice stuff here
}
// the rest of your function here...
}
$("#map").click(myFunc).keypress(myFunc);
编辑:投入jQuery函数链接。
啊,好吧。我想我发现了你的错误。我已经重新格式化了你的代码并将其整理了一些。试试这个:function move(e) {
var posX = $(this).offset().left,
var posY = $(this).offset().top;
var go = "";
if (posX > 75 && posX < 150 && posY < 75) {
go = "N";
}
if (e.which == 38) {
go = "N";
}
$.post("inc_map.php", {
move: go
}, function(data) {
var substr = data.split('@');
if (substr[0] != "block") {
var x1 = substr[0];
var y1 = substr[1];
x = parseInt(x1) * 32;
y = parseInt(y1) * 32;
$("#mapview").css({
backgroundPosition: -x + "px " + -y + "px"
});
$("#map").html(substr[2]);
$("#info").html(substr[3]);
};
$("#pos").html((x / 32) + ', ' + (y / 32));
});
};
答案 1 :(得分:0)
使用jQuery.bind()。
您可以将以空格分隔的列表传递给.bind()以获取多个事件,例如
$("#map").bind("click keypress", myFunc);
答案 2 :(得分:0)
在点击和按键之间传递一个公共事件处理程序
例如:
function myFunc(e) {
//For cursor
switch(e.charCode) {
case 37:
// Left
break;
case 37:
// Up
break;
case 37:
// Right
break;
case 37:
// Down
break;
}
}
$("#map").click(myfunc).keypress(myfunc);