2010-12-12 2 views
0

Я пытаюсь сделать прокрутку страницы для публикации, которая имеет конкретный идентификатор, например. пост-21 после-22 и т.д.Почему я не могу заставить этот код jquery работать?

Но это не сработает. что может быть неправильно с моим синтаксисом здесь, пожалуйста?

// 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) возвращается точно пост с надлежащим удостоверением я должен быть в. Просто не могу заставить его работать в анимации/прокрутке. Пожалуйста, помогите мне

ответ

1

Вам нужно только селектор в виде строки, а не весь вызове $() функции, как это:

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

Также он может быть оптимизирован, как и выше ... нет необходимости позвонить .position() дважды получить тот же результат.

+0

Это не сработало. Я уже это пробовал. Я не знаю, почему –

+0

@Ahmad - это правильное предупреждение, оно * - это объект. Если вы хотите что-то значимое, сделайте 'alert (thispost.top)' с моим кодом выше. –

+0

Я думаю, что нашел свою ошибку, я отправлю ему более подходящий вопрос. –

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

Не уверен, что это полезно, но стоит поделиться. Я использую этот плагин, когда я хочу что-то прокручивать http://demos.flesler.com/jquery/scrollTo/

+0

+1 в духе, плагин scrollTo отлично! :) – deceze

4

Try:

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

Вы не хотите, чтобы создать строку «$("#post-42")», который вы хотите создать строку «#post-42» и передать его функция $.

Смежные вопросы