Jump to content
  • 0

Вычисление координат


-O-J-A-
 Share

Question

Здравствуй Народ, всех с НГ, наступающим Рождеством.

Нужно сделать вот что:

Есть 512 дивов, нужно при mouseover выводить его координату X Y через innerhtml или load jquery.

К примеру: x=6 y=10 (то есть 6 рядок по горизонтали, 10 вертикаль (всего 16 рядов по X, по Y 32) )

В голову пришли пару решений, но они на мое мнение не кошерны...

К примеру такое:

$("#b1").mouseover(function(){$("#coords_xy").html("x(1); y(1);");});

$("#b2").mouseover(function(){$("#coords_xy").html("x(1); y(2);");});

...

$("#b512").mouseover(function(){$("#coords_xy").html("x(32); y(16);");});

и так 512 шт... :)

Для чего и почему 512 шт не спрашивайте, секрет большой)))

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Эммм. Ну, если эти все 512 дивов единственные, то тогда:

$(div).mouseover(function(){$("#coords_xy").html("x(1); y(1);");});

Если нет, то можно задать им класс и сделать так:

$(".ourclass").mouseover(function(){$("#coords_xy").html("x(1); y(1);");});

А я бы обернул их в ещё один див и сделал бы так:

$("#bigdiv > div").mouseover(function(){$("#coords_xy").html("x(1); y(1);");});

Link to comment
Share on other sites

  • 0

А, так проблема в том, чтобы получить именно координату? Ну можно что-то типа такого:

$("#bigdiv > div").mouseover(function(){$("#coords_xy").html(x($(this).offset().top)+'; '+y($(this).offset().left)+';');});

Не уверен, что это сработает именно в таком виде, но, по крайней мере, через offset() можно решить задачу.

Link to comment
Share on other sites

  • 0

Немного не то, но спасибо :) , буду копать дальше как сделать не по пикселям, а по рядкам.

// вот сделал, извращенно, но работает:

<span id="coords_x"></span>

<span id="coords_y"></span>

<div id="x1" class="y1"></div>

$(document).ready(function() {

$("#backa div").mouseover(function() {

$("#coords_x").html($(this).attr("id"));

$("#coords_y").html($(this).attr("class"));

});

});

Edited by -O-J-A-
Link to comment
Share on other sites

  • 0

Мда, тотальное jquery головного мозга.

Решение задачи лежит у вас под носом, только нужно для начала забыть про существование оЙгукн.

Решение первое. Медленное.

При наведении на какой-то элемент мы возвращаемся по дереву нод к его родительской ноде (parentNode), потом перебираем всех детей (childNodes) пока очередной элемент не совпадет с нашим исходным. Если совпал, то прекращаем цикл и запоминаем индекс, на котором сработало условие равенства.

Потом делим полученный индекс на 16 и округляем в меньшую сторону. Это будет наша координата Y. А потом берем остаток от деления на 16 нашего индекса. Это будет координата X.

Оформляем все вышеперечисленное в фукнцию и присваиваем ее в качестве обработчика всем элементам сразу.

Решение второе. Побыстрее

Проходим единоразово по всем элементам и присваиваем им нужные индексы в качестве свойств ноды. При наведении фукнция будет простой - показать свойство ноды.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy