2012-01-04 25 views
0

我在我的项目中使用CSS通配符选择器和jQuery通配符选择器。如果我只有一个结果,一切似乎都正常工作,但如果我有两个对话框,那么我得到了奇怪的结果。多个div和多个对话框

有选择工作,仅一个对话和DIV:

Working sample

与选择器和两个对话框,并div的工作:

Not working sample

  1. 为了看到错误只需将两个对话框并排放置即可。首先在第一个对话框内单击,表单字段将获得正确的值。之后点击第二个对话框。这些值是错误的。我认为是根据第一个对话框中的div来计算值。其次,在Firefox中,我点击第一个对话框后有一些奇怪的结果。例如,我得到x = 12. [2139219329193]一些随机数而不是一个整数。

理想的结果:

当你点击一个对话框,我想根据对话框内div的,正确的坐标内。我需要0,0和320,400之间的坐标,这是两幅图像的大小!

+1

你忘了告诉我们预期的结果是什么。 – 2012-01-04 22:25:47

+0

当您在对话框中单击时,我想根据对话框中的div获取正确的坐标。我需要0,0和320,400之间的坐标,这是两幅图像的大小! – glarkou 2012-01-04 22:29:27

+0

为什么你反复调用'.dialog('open')'? – Alnitak 2012-01-04 22:46:48

回答

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 2012-01-04 22:49:56

+1

区别在于,在这种情况下,'this'是一个[纯DOM节点](https://developer.mozilla.org/en/DOM/Node)。如果你将它传递给'$()',它会被包装在一个jQuery对象中,它允许你调用'dialog'和'offset'(以及其他东西)。 – PPvG 2012-01-04 22:54:02

+0

在Firefox“问题”中,您是否尝试过['Math.round()'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Math/round)? – PPvG 2012-01-04 22:54:46