为什么我不能让这个jquery代码工作?

时间:2010-12-12 23:56:52

标签: javascript jquery

我正在尝试将页面滚动到具有特定ID的帖子,例如21后等等22后

但它不起作用。请问我的语法可能有什么问题?

// 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);

请注意alert(thispost)准确地返回具有我应该使用的正确ID的帖子。只是无法让它在动画/滚动中工作。请帮帮我

4 个答案:

答案 0 :(得分:4)

尝试:

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

您不想创建字符串“$("#post-42")”,您想要创建字符串“#post-42”并将其传递给$函数。

答案 1 :(得分:1)

您只需将选择器作为字符串,而不是整个$()函数调用,如下所示:

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

此外,它可以像上面一样优化...无需再调用.position()两次以获得相同的结果。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

不确定这是否有用,但值得分享。当我想滚动http://demos.flesler.com/jquery/scrollTo/

时,我会使用此插件