jQuery - 每个 <li> Unslider 上的 运行 函数
jQuery - Run function on each <li> of Unslider
我正在使用 Unslider 并且滑块工作正常。
我在每个 <li>
中都有一个 <h1>
作为幻灯片的标题。
我有一个 resizeH1()
函数来调整这个 <h1>
的大小:
function resizeH1() {
var $h1 = $('.entry-header h1');
if (window.innerWidth >= 768) {
// Calculate the total height of the element
var totalHeight = ($h1.height());
var numOfLines = totalHeight / 88;
// Force this element height to always be 88px
$h1.height(88);
// Adjust $h1 font-size depending on it's number of lines
if (numOfLines === 2) {
$h1.css('font-size', '42px');
} else if (numOfLines === 3) {
$h1.css('font-size', '40px');
} else if (numOfLines === 4) {
$h1.css('font-size', '38px');
} else if (numOfLines >= 5) {
$h1.css('font-size', '28px');
}
// Align the $h1 text verticaly at the very end
if (numOfLines >= 2) {
$h1.css({
'text-align': 'center',
'display': 'flex',
'justify-content': 'center',
'align-items': 'flex-end'
});
}
} else {
// Reset the $h1 state when (window.innerWidth < 768)
$h1.css({
'height': '',
'font-size': '',
'text-align': '',
'display': '',
'justify-content': '',
'align-items': ''
});
}
}
我的问题是这个函数只适用于第一个<li>
的第一个<h1>
,
其他 <li>
中的 <h1>
与第一个相同 font-size
!
如何 运行 resizeH1()
每个 <li>
而不是第一个?
在发布之前,我已经尝试了我所知道的一切并进行了大量搜索。
非常感谢任何 suggestion/help.
你需要一个循环结构。对于 jQuery 个元素,您可以使用 .each()。您的代码如下所示:
function resizeH1() {
$('.entry-header h1').each(function () {
$h1 = $(this);
if (window.innerWidth >= 768) {
// Calculate the total height of the element
var totalHeight = ($h1.height());
var numOfLines = totalHeight / 88;
// Force this element height to always be 88px
$h1.height(88);
(...)
}
});
有关详细信息,请参阅 api.jquery.com/each/
我正在使用 Unslider 并且滑块工作正常。
我在每个 <li>
中都有一个 <h1>
作为幻灯片的标题。
我有一个 resizeH1()
函数来调整这个 <h1>
的大小:
function resizeH1() {
var $h1 = $('.entry-header h1');
if (window.innerWidth >= 768) {
// Calculate the total height of the element
var totalHeight = ($h1.height());
var numOfLines = totalHeight / 88;
// Force this element height to always be 88px
$h1.height(88);
// Adjust $h1 font-size depending on it's number of lines
if (numOfLines === 2) {
$h1.css('font-size', '42px');
} else if (numOfLines === 3) {
$h1.css('font-size', '40px');
} else if (numOfLines === 4) {
$h1.css('font-size', '38px');
} else if (numOfLines >= 5) {
$h1.css('font-size', '28px');
}
// Align the $h1 text verticaly at the very end
if (numOfLines >= 2) {
$h1.css({
'text-align': 'center',
'display': 'flex',
'justify-content': 'center',
'align-items': 'flex-end'
});
}
} else {
// Reset the $h1 state when (window.innerWidth < 768)
$h1.css({
'height': '',
'font-size': '',
'text-align': '',
'display': '',
'justify-content': '',
'align-items': ''
});
}
}
我的问题是这个函数只适用于第一个<li>
的第一个<h1>
,
其他 <li>
中的 <h1>
与第一个相同 font-size
!
如何 运行 resizeH1()
每个 <li>
而不是第一个?
在发布之前,我已经尝试了我所知道的一切并进行了大量搜索。
非常感谢任何 suggestion/help.
你需要一个循环结构。对于 jQuery 个元素,您可以使用 .each()。您的代码如下所示:
function resizeH1() {
$('.entry-header h1').each(function () {
$h1 = $(this);
if (window.innerWidth >= 768) {
// Calculate the total height of the element
var totalHeight = ($h1.height());
var numOfLines = totalHeight / 88;
// Force this element height to always be 88px
$h1.height(88);
(...)
}
});
有关详细信息,请参阅 api.jquery.com/each/