2010-12-12 7 views
0

J'essaye de faire défiler la page pour poster qui a l'id spécifique par ex. post-21 post-22 etcPourquoi je n'arrive pas à faire fonctionner ce code jquery?

Mais cela ne fonctionnera pas. ce qui pourrait être faux avec ma syntaxe ici s'il vous plaît?

// this is number of posts visible. returns e.g. 2 
var posts_visible = <?php echo $news['num_per_page']; ?>; 
// this is number of more posts loaded. returns e.g. 2 
var posts_more = <?php echo $news['num_per_more']; ?>; 
// here i calculate the value to know which position should we be at after scroll 
var newposition = posts_visible + (posts_more * $.cookie('n_more')); 
// here i am trying to set #post-(thepostnumber) 
var thispost = '$("#post-' + newposition + '")'; 
$('html,body').animate({ 
    scrollTop: thispost.position().top + 'px', 
    scrollLeft: thispost.position().left + 'px' 
},1000); 

S'il vous plaît noter que alert(thispost) rendement avec précision le poste avec le bon ID que je devrais être à. Je ne peux tout simplement pas le faire fonctionner dans l'animation/défilement. S'il vous plaît aidez-moi

Répondre

1

Vous avez juste besoin le sélecteur comme une chaîne, et non l'ensemble de l'appel de la fonction $(), comme ceci:

var thispost = $("#post-" + newposition).position(); 
$('html,body').animate({ 
    scrollTop: thispost.top + 'px', 
    scrollLeft: thispost.left + 'px' 
},1000); 

En outre, il peut être optimisé comme ci-dessus ... pas besoin d'appeler .position() deux fois obtenir le même résultat.

+0

Cela n'a pas fonctionné. J'ai déjà essayé. Je ne sais pas pourquoi –

+0

@Ahmad - c'est l'alerte correcte, c'est * un * objet. Si vous voulez quelque chose de significatif, faites 'alert (thispost.top)' avec mon code ci-dessus. –

+0

Je pense que j'ai trouvé mon erreur, je vais poster une question plus appropriée. –

0
var thispost = $("#post-"+ newposition); 
$('html,body').animate({ 
    scrollTop: thispost.position().top + 'px', 
    scrollLeft: thispost.position().left + 'px' 
},1000); 
0

Vous ne savez pas si cela peut vous être utile, mais vous pouvez le partager. J'utilise ce plugin quand je veux faire défiler quelque chose http://demos.flesler.com/jquery/scrollTo/

+0

+1 dans l'esprit, le plugin scrollTo est génial! :) – deceze

4

Essayez:

var thispost = $("#post-" + newposition); 

Vous ne voulez pas créer une chaîne « $("#post-42") », vous voulez créer la chaîne « #post-42 » et le transmettre à la fonction $.

Questions connexes