“切换”后的 jQuery 操作事件
我创建了一张地图,用户可以从一栋建筑步行到另一栋建筑。地图旁边有一个小地图。 “大”地图只需使用 load() 命令即可刷新。我有以下代码:
$(document).keydown(function(event) {
switch (event.keyCode) {
// A
case 65: $("#world").load("../modules/Map.php?go&move=w"); break;
// W
case 87: $("#world").load("../modules/Map.php?go&move=n"); break;
// D
case 68: $("#world").load("../modules/Map.php?go&move=e"); break;
// S
case 83: $("#world").load("../modules/Map.php?go&move=s"); break;
}
});
现在,在按下其中一个键后,我希望执行以下操作:
$("#minimap").load("../modules/Minimap.php");
我希望你能帮助我。
I created a map where a user can walk from one building to another. Next to the map there's a small minimap. The "big" map just refreshes by using the load() command. I have got the following code:
$(document).keydown(function(event) {
switch (event.keyCode) {
// A
case 65: $("#world").load("../modules/Map.php?go&move=w"); break;
// W
case 87: $("#world").load("../modules/Map.php?go&move=n"); break;
// D
case 68: $("#world").load("../modules/Map.php?go&move=e"); break;
// S
case 83: $("#world").load("../modules/Map.php?go&move=s"); break;
}
});
Now, right after pressing one of the keys, I want the following to be executed:
$("#minimap").load("../modules/Minimap.php");
I hope you can help me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你有两个选择,但首先,让我们稍微重构一下(我稍后会重构更多内容,但让我们从这个开始):
现在第一个负载是集中的,我们不会重复自己。
好的,您有两个选择:
如果您希望两个
load
同时发生,请将其放在switch
语句之后。例如,在最后拿起:我假设我们只想在密钥匹配时才执行此操作。如果我错了,请将其移出
if
。如果您希望第二个加载等待第一个加载完成,请在第一个
加载
上使用success
回调。更多信息请参见文档。
这是更彻底的重构版本: 有这个:
然后要么这个(上面的选项 1):
或者这个(上面的选项 2):
这些使用对象将键码映射到方向,利用这样的事实,您可以使用以下命令查找对象属性:括号内的记号。
(不用担心
keyCode
是一个数字,但我们映射中的键是字符串;每当您使用括号表示法时,您给出的任何内容都会被 JavaScript 解释器转换为字符串。事实上,这就是即使您索引到数组时也是如此,因为 JavaScript 数组 并不是真正的数组但同样,我们使用的是普通对象,而不是数组。)You have two choices, but first, let's refactor slightly (I'll refactor more in a moment, but let's start with this):
Now the first load is centralized and we're not repeating ourselves.
Okay, you have two choices:
Put it after the
switch
statement if you want bothload
s to happen at the same time. E.g., picking up at the end:I've assumed there that we only want to do it if a key matched. If I'm wrong, move it out of the
if
.Use the
success
callback on the firstload
if you want the second load to wait until the first one is complete.More in the docs.
Here's the more thoroughly refactored version: Have this:
And then either this (option 1 above):
Or this (option 2 above):
Those use an object to map keycodes to directions, taking advantage of the fact you can look up object properties using bracketed notation.
(Don't worry that
keyCode
is a number but the keys in our map are strings; whenever you use bracketed notation, whatever you give is converted to a string by the JavaScript interpreter. In fact, that's the case even when you index into an array, since JavaScript arrays aren't really arrays. But again, we're using a plain object, not an array.)