2013-04-21 97 views
0

我的页面上有两个div元素,它们的定位方式使得div与页面顶部的距离相同,但相隔一定的水平距离。这两个div元素都使用Javascript/jQuery动态地输入了一些文本。我想以这样一种方式访问​​两个div中的文本,以便当两个div包含相同(或匹配)的文本时我可以执行一些操作。有没有办法做到这一点的基础上使用Javascript/jQuery的div的位置?由于某些限制,我无法使用id的明显解决方案。根据窗口位置访问div元素的内容

+0

你可以为每个元素分配唯一的类吗? – 2013-04-21 17:38:25

+0

每个div的独特类?我想我可以。我做完之后呢? – Ronophobia 2013-04-21 17:40:18

+0

使用类 – 2013-04-21 17:40:42

回答

1

比方说,你想要的两个div是在100,100和100,300:

var all_divs = $("div"); 
var div1; 
var div2; 

for (var i=0; i<all_divs.length; i++){ 
    var o = $(all_divs[i]).offset(); 

    if (o.top == 100 && o.left == 100) { 
     div1 = all_divs[i]; 
    } 

    if (o.top == 100 && o.left == 300) { 
     div2 = all_divs[i]; 
    } 
} 

var polling = setInterval(function(){ 
    if ($(div1).text() == $(div2).text()) { 
     perform_some_action(); 
     clearInterval(polling); 
    } 
}, 500); 
+0

这看起来很棒。但为什么setInterval? – Ronophobia 2013-04-21 17:52:28

+0

This works great :) – Ronophobia 2013-04-21 18:39:44

+0

你说DIVs的内容是动态更新的,所以我不确定你是否可以在更新时触发它,或者你只需​​要继续检查。如果在更新DIV时检查内容,则可能不需要'setInterval'。 – 2013-04-21 18:43:51

1

如果你想根据自己的位置使用,以确定您的div .offset()

- Api documentation for .offset()

+0

我也在想这个。但我想知道它是否为所有浏览器提供了相同的结果。 – Ronophobia 2013-04-21 17:50:22

+0

从我能看到的快速搜索...偏移应该适用于大多数浏览器。尽管IE通常如此,但可能会出现一些问题。研究一下,那里有很多解决方案。 – apaul 2013-04-22 02:28:58