Так что я пытался понять это часами!Я пытаюсь сделать универсальную функцию, где, если контент имеет только определенную высоту, и если пользователь нажимает «показать больше», он будет отображать весь контент, установив высоту на авто.Проблема в том, что я использую .toggle()
, и для этого нужны две разные функции.Я хочу каким-то образом сохранить исходное значение высоты, изменить его высоту на автоматический, а затем восстановить первоначальную высоту, когда пользователь нажимает кнопку «Показать / Скрыть».На странице будут разные элементы div, поэтому мне нужно убедиться, что когда пользователь нажимает кнопку показать / скрыть, он будет ссылаться на ближайший элемент div.
Я пытался использовать .data()
для передачи одной и той же информации через две отдельные функции, и каким-то образом это сработало в первый раз, когда я это сделал, но я не знаю, что происходит, и значение, хранящееся в .data
can 't передается вместе с другой функцией.
Вот код:
// When the user clicks the button with the class .more
$('.more').toggle(
//This stores the height of the original div and then sets it height to auto
function (e) {
e.preventDefault();
// This will travel up to the parent and find the corrresponding content div and store its height in a variable oh(original height)
var oh = $(this).parents('.parent')
.find('.content').height();
// im trying to get this information to be pass along the other function
$(this).data('original_height', oh);
$(this).$(this).parents('.parent')
.find('.content')
.css('height', 'auto');
$(this).text('hide');
},
// This function restores the original height of the div
function (e) {
e.preventDefault();
// im trying to get the value of the original_height to be pass along into this function. Howw!!!!
var original_height_value = $(this).data('original_height')
$(this).parents('.' + parent)
.find('.' + content)
.css('height', original_height_value + 'px');
$(this).text('more');
}
});