2010-08-25 4 views
2

Je suis pagination d'une page HTML. Afin de calculer plus efficacement les décalages de pages, je me demandais s'il était possible d'obtenir l'élément contenant un certain décalage de coordonnées à partir du début de la page. Merci beaucoup d'avance pour votre aide, Cheers!Trouver l'élément DOM contenant un décalage spécifique avec jQuery ou JavaScript simple

+0

Y a-t-il un élément spécifique que vous ciblez? Pourriez-vous mettre en place une structure d'échantillon? – Marko

+0

Je ne cible pas un élément spécifique, mais les fichiers HTML sur lesquels j'ai travaillé contiennent principalement des P, des IMG et des A, ils sont tous des frères et soeurs de haut niveau et ne se chevauchent pas, rien d'extraordinaire. Ma stratégie jusqu'ici a été d'énumérer tous les éléments dans le corps et de calculer leurs décalages et de vérifier s'ils tombent sur une limite de page (je sais quelle est la taille de la vue). Je peux passer des éléments aux compensations, je me demandais simplement si le passage des compensations aux éléments était possible. –

Répondre

2

Vous pouvez faire quelque chose comme:

var offset = 100; 
$(document.body).find('[offsetTop = '+offset']'); 

ou

var offset = 100; 
$("body *").filter(function() { 
    return this.offsetTop == offset; 
}); 

puisque vous avez dit qu'ils sont tous les éléments de haut niveau, les éléments suivants doivent également travailler:

$(document.body).children().filter(function() { 
    return this.offsetTop == offset; 
}); 

Vous peut également $(this).offset() pour obtenir les compensations. L'utilisation de la propriété offsetTop obtient uniquement le décalage du parent, je crois. Mais cela n'a pas d'importance puisqu'ils sont tous des éléments de haut niveau.

+0

Merci Daniel, Je suppose que je pourrais faire this.offsetTop> = offset pour trouver le premier élément après un certain décalage, non? –

+1

@Engin Kurutepe: Eh bien, il va retourner tous les éléments qui correspondent à cette condition, et pas seulement le premier. Mais essentiellement, oui - vous pouvez y mettre n'importe quelle condition. De plus, je ne suis pas sûr qu'ils seront retournés dans l'ordre (en fonction du décalage), donc vous devriez l'extraire pour ne pas utiliser le premier élément du tableau jQuery en supposant que c'est le premier élément qui satisfait cette condition (bien que cela puisse bien être). –

Questions connexes