Jquery 在每个()完成后激发函数
这与这个问题有点关系 但这个解决方案似乎对我不太管用 基本上,我有一段JavaScript,用于计算某些元素的宽度:Jquery 在每个()完成后激发函数,jquery,Jquery,这与这个问题有点关系 但这个解决方案似乎对我不太管用 基本上,我有一段JavaScript,用于计算某些元素的宽度: var totalWidth = 0; $element.find('li').each(function () { totalWidth += $(this).width(); }); 在此之后,我想使用宽度设置另一个元素: $element.width(totalWidth); 如果我附加了调试器,它会工作,但如果我只是运行它,它不会工作。这让我觉得宽度是在.e
var totalWidth = 0;
$element.find('li').each(function () {
totalWidth += $(this).width();
});
在此之后,我想使用宽度设置另一个元素:
$element.width(totalWidth);
如果我附加了调试器,它会工作,但如果我只是运行它,它不会工作。这让我觉得宽度是在.each()
完成之前设置的
我尝试使用.promise()
来解决此问题,但似乎没有什么不同
var totalWidth = 0;
$element.find('li').each(function () {
totalWidth += $(this).width();
});
$element.promise().done(function () {
$element.width(totalWidth);
});
这是我的HTML
<div class="carousel">
<ul>
<li>
<img src="/Images/Travel2New/Adverts/advertHolder_1.png" />
</li>
<li>
<img src="/Images/Travel2New/Adverts/advertHolder_2.png" />
</li>
<li>
<img src="/Images/Travel2New/Adverts/advertHolder_3.png" />
</li>
<li>
<img src="/Images/Travel2New/Adverts/advertHolder_4.png" />
</li>
<li>
<img src="/Images/Travel2New/Adverts/advertHolder_5.png" />
</li>
</ul>
</div>
-
-
-
-
-
有什么想法吗?由于您的宽度计算应该等到图形加载后再进行,因此您可以尝试以下操作:
$(window).load(function () {
var totalWidth = 0;
$element.find('li').each(function () {
totalWidth += $(this).width();
});
$element.width(totalWidth);
});
从事件示例描述中,我们可以看到:
当页面完全加载(包括图形)时运行函数
$(window).load(function () {
// run code
});
注意到,
因为你的宽度计算应该等到图形加载,然后你可以尝试如下:
$(window).load(function () {
var totalWidth = 0;
$element.find('li').each(function () {
totalWidth += $(this).width();
});
$element.width(totalWidth);
});
从事件示例描述中,我们可以看到:
当页面完全加载(包括图形)时运行函数
$(window).load(function () {
// run code
});
注意,目前的
var totalWidth = 0;
var $elems = $element.find('li');
(function fetch(i) {
if(i >= $elems.length) return; // no elems left
var $elem = $elems.eq(i);
totalWidth += $($elem).width();
if(i+1==$elems.length)
{
$element.width(totalWidth);
}
else
{
fetch(i + 1); // next one
}
})(0); // start with first elem
这就是
的已知问题。每个
你可以这样做
var totalWidth = 0;
var $elems = $element.find('li');
(function fetch(i) {
if(i >= $elems.length) return; // no elems left
var $elem = $elems.eq(i);
totalWidth += $($elem).width();
if(i+1==$elems.length)
{
$element.width(totalWidth);
}
else
{
fetch(i + 1); // next one
}
})(0); // start with first elem
load()事件已弃用。因此请不要suggest@jhonraymos好啊你知道如何替换它吗?load()事件已被弃用。所以不要这样做suggest@jhonraymos好啊有没有办法替换它?