Демо: http://jsfiddle.net/My29d/
У меня есть контент вроде # 1, # 2, # 3, # 4 и более...
Когда я нажимаю readmore
# 2 и нажимаю readmore
# 1, это нормально, потому что скрытое содержимое расширяется ниже, а окно остается в том же положении.
Но когда я нажимаю readmore
# 1 и scoll на контент # 2, то нажмите на readmore
# 2
расширенный контент # 1 будет скрыт, а контент # 2 покажет полный контент.
Итак, позиция окна не остается в том же положении?
Я понятия не имею, как это сделать.
Может быть, использовать прокрутку к текущему расширенному элементу?
more_btn.on('click', function () {
more_btn.show();
more_content.hide();
$(this).hide().next('div').show().css('display', 'inline');
});
PS: Если этот вопрос плохой, я сожалею и скажу, что я расширяюсь.
Я сейчас готов:
var more_btn = $('div > span');
var more_content = $('div > div');
more_btn.on('click', function (e) {
var $this = $(this);
var top = e.pageY - $(window).scrollTop();
more_btn.show();
more_content.hide();
$(this).hide().next('div').show().css('display', 'inline');
$('html, body').scrollTop(
$this.next('div').offset().top - top
);
});
Я не уверен, понимаю ли я то, что вы точно хотите, но если я правильно понимаю, то это может быть то, что вы ищете:
var more_btn = $('div > span');
var more_content = $('div > div');
more_btn.on('click', function () {
more_btn.show();
more_content.hide();
$(this).hide().next('div').show().css('display', 'inline');
$('html, body').animate({
scrollTop: $(this).parent('div').offset().top
}, 500);
});
scrollTop
и после того, как вы сделаете анимацию, прокрутите назад к тому же значению