С первого и очень быстрого взгляда вы можете выделить область щелчка в отдельную функцию.
Примерно так.
$("#div1").click(function(e)
{
// Arrays containing the x and y values of the rectangular area around a farm
// [minX, maxX, minY, maxY]
var div1_Coord_Area1= [565, 747, 310, 423];
var div1_Coord_Area2= [755, 947, 601, 715];
if(inArea(div1_Coord_Area1, someStructForMouseLocation))
{
alert("You clicked in the first area");
}
if(inArea(div1_Coord_Area2, someStructForMouseLocation))
{
alert("You clicked in the second area");
}
});
function inArea(coordArea, mouseLocation)
{
return mouseLocation.X >= coordArea[0] && mouseLocation.X <= coordArea[1] && mouseLocation.Y >= coordArea[2] && mouseLocation.Y <= coordArea[3]
}
Похоже, у вас также есть "магические" числа в var div1_Coord_Area1= [565, 747, 310, 423];
и var div1_Coord_Area2= [755, 947, 601, 715];
. Я хотел бы рассмотреть вопрос о том, чтобы сделать их глобальными переменными, чтобы они выходили за рамки функции click.
Это будет читать как
// Arrays containing the x and y values of the rectangular area around a farm
// [minX, maxX, minY, maxY]
var div1_Coord_Area1= [565, 747, 310, 423];
var div1_Coord_Area2= [755, 947, 601, 715];
$("#div1").click(function(e)
{
if(inArea(div1_Coord_Area1, someStructForMouseLocation))
{
alert("You clicked in the first area");
}
if(inArea(div1_Coord_Area2, someStructForMouseLocation))
{
alert("You clicked in the second area");
}
});
function inArea(coordArea, mouseLocation)
{
return mouseLocation.X >= coordArea[0] && mouseLocation.X <= coordArea[1] && mouseLocation.Y >= coordArea[2] && mouseLocation.Y <= coordArea[3]
}
Надеюсь, вы видите, что мой процесс является одним из дальнейших усовершенствований. НЕ ожидайте писать чистый код при первом создании метода. Вы должны посмотреть на это позже и посмотреть, рассказывает ли это историю. Другим изменением было бы имя div1_Coord_Area1
, действительно ли имя соответствует значению переменной? Нет. HotSpotArea1
будет означать больше? Помните, что вы рассказываете историю с кодом. Чем больше вы сможете сделать, тем лучше будет читать следующий человек, используя наименьшее количество циклов мозга для чтения кода.
Вы должны постоянно совершенствовать, чтобы получить действительно чистый код.