Jquery eq选择器不在类

时间:2015-12-01 18:08:08

标签: javascript jquery html offset

首先,我已经在stackoverflow上做了很多调查而没有运气。它应该很简单......我动态地将类.ocurrencia_busqueda添加到很多跨度中。如果我$('.ocurrencia_busqueda').length,则返回64次。但是当我试图获得每个事件的偏移量时,我总是得到相同的值,既可以从控制台尝试代码,也可以在脚本中进行硬编码:

JS

$('.ocurrencia_busqueda:eq(0)').offset()
Object { top=-434.79998779296875,  left=566.75}
$('.ocurrencia_busqueda:eq(1)').offset()
Object { top=-434.79998779296875,  left=566.75}
$('.ocurrencia_busqueda:eq(2)').offset()
Object { top=-434.79998779296875,  left=566.75}

我已经尝试用

获取偏移量
$('.ocurrencia_busqueda').eq(N) 

而不是

$('.ocurrencia_busqueda:eq(N)')
没有运气。

应返回偏移量的函数是:

var offset = 0;
function busca_texto() {    
    var divPosition = $('.ocurrencia_busqueda').eq(parseInt(mioffset)).offset();                        
    console.log(divPosition);
    $('html, body').animate({scrollTop: divPosition.top}, "slow");    
    mioffset++;
}

跨度就像 的 HTML

<span style="color:red" class="ocurrencia_busqueda" onclick="javascript:console.log($(this).offset());">TEXT</span>

当点击元素时,onclick事件为每个元素提供了不同的偏移量。每次调用busca_texto()函数时,变量mioffset都会增加,并且应该返回下一次出现的偏移量,但是当变量增加而没有问题时,它总是返回相同的值。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

通常它的工作检查现场例子如下:

console.log( $('.ocurrencia_busqueda:eq(0)').offset() );
console.log( $('.ocurrencia_busqueda:eq(1)').offset() );
console.log( $('.ocurrencia_busqueda:eq(2)').offset() );

//Object {top: 8, left: 8}
//Object {top: 8, left: 60.875}
//Object {top: 8, left: 113.75}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span style="color:red" class="ocurrencia_busqueda" onclick="javascript:console.log($(this).offset());">TEXT1</span>

<span style="color:red" class="ocurrencia_busqueda" onclick="javascript:console.log($(this).offset());">TEXT2</span>

<span style="color:red" class="ocurrencia_busqueda" onclick="javascript:console.log($(this).offset());">TEXT3</span>

使用each()函数尝试:

$('.ocurrencia_busqueda').each(function(index){
    console.log( $('.ocurrencia_busqueda:eq('+index+')').offset() );
})

//Object {top: 8, left: 8}
//Object {top: 8, left: 60.875}
//Object {top: 8, left: 113.75}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span style="color:red" class="ocurrencia_busqueda" onclick="javascript:console.log($(this).offset());">TEXT1</span>

<span style="color:red" class="ocurrencia_busqueda" onclick="javascript:console.log($(this).offset());">TEXT2</span>

<span style="color:red" class="ocurrencia_busqueda" onclick="javascript:console.log($(this).offset());">TEXT3</span>

答案 1 :(得分:-1)

似乎是您要添加到span元素的类.ocurrencia_busqueda的问题。检查类是否已将position:absolute声明为属性。这是我能想到的唯一场景,当所有span元素的偏移量相同时。

这是一个显示您可能遇到的问题的示例:

http://jsfiddle.net/ywhjLn7j/