2012-01-04 2 views
0

Я использую селекторные символы css и подстановочные знаки jQuery в моем проекте. Кажется, что все работает нормально, если у меня есть только один результат, но если у меня есть два диалога, то я получаю странные результаты.Несколько divs и несколько диалогов

Работа с селекторами и только один диалог и ДИВ:

Working sample

Работа с селекторами и двумя диалогами и дивы:

Not working sample

  1. Для того, чтобы увидеть ошибки просто переместите два диалога бок о бок. Сначала щелкните внутри первого диалога, и поля формы получат правильное значение. Затем нажмите внутри второго диалога. Значения неверны. Я думаю, что вычисляет значения по div в первом диалоговом окне.

  2. Во-вторых, в Firefox у меня есть некоторые странные результаты после нажатия внутри 1-го диалога. Например, я получаю x = 12. [2139219329193] некоторые случайные числа вместо целого числа.

Желательный результат:

При нажатии кнопки в диалоге, я хочу, чтобы получить правильные координаты в соответствии с DIV внутри диалога. Я хочу, чтобы координаты составляли от 0,0 до 320,400, что является размером двух изображений!

+1

Вы забыли рассказать нам, каков ожидаемый результат. –

+0

Когда вы щелкаете внутри диалога, я хочу получить правильные координаты в соответствии с div внутри диалогового окна. Я хочу, чтобы координаты составляли от 0,0 до 320,400, что является размером двух изображений! – glarkou

+0

Почему вы вызываете '.dialog ('open')' снова и снова? – Alnitak

ответ

1

Попробуйте заменить это:

var o = $("[id^=pointer_div]").dialog("open").offset(); 

С этим:

var o = $(this).dialog("open").offset(); 

Первый из них будет найти как указатель DIV снова, вызовите dialog("open") на обоих, а затем вернуться offset() для первым найденных элементов.

Принимая во внимание, что во второй версии используется this, который при использовании внутри обработчика click всегда указывает на конкретный элемент, который был нажат.

+0

Спасибо, его работа. Я использовал 'this.dialog (« open »). Offset();' и он не работал. Не могли бы вы объяснить мне разницу между 'this.' и' $ (this) .'. Наконец, вы знаете, как исправить странную проблему с номерами в Firefox? – glarkou

+1

Разница заключается в том, что в этом случае 'this' является [plain DOM Node] (https://developer.mozilla.org/en/DOM/Node). Если вы передадите его в '$()', он будет завернут в объект jQuery, что позволит вам называть 'dialog' и' offset' (и множество других вещей). – PPvG

+0

На вопрос «Проблема» Firefox вы попробовали ['Math.round()'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Math/round)? – PPvG

Смежные вопросы