Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在每个()完成后激发函数_Jquery - Fatal编程技术网

Jquery 在每个()完成后激发函数

Jquery 在每个()完成后激发函数,jquery,Jquery,这与这个问题有点关系 但这个解决方案似乎对我不太管用 基本上,我有一段JavaScript,用于计算某些元素的宽度: var totalWidth = 0; $element.find('li').each(function () { totalWidth += $(this).width(); }); 在此之后,我想使用宽度设置另一个元素: $element.width(totalWidth); 如果我附加了调试器,它会工作,但如果我只是运行它,它不会工作。这让我觉得宽度是在.e

这与这个问题有点关系

但这个解决方案似乎对我不太管用

基本上,我有一段JavaScript,用于计算某些元素的宽度:

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
});

注意到, Load()/Case>事件似乎是,所以你应该考虑你使用的jQuery版本。

因为你的宽度计算应该等到图形加载,然后你可以尝试如下:

$(window).load(function () {
    var totalWidth = 0;

    $element.find('li').each(function () {
        totalWidth += $(this).width();
    });

    $element.width(totalWidth);
});
从事件示例描述中,我们可以看到:

当页面完全加载(包括图形)时运行函数

$(window).load(function () {
    // run code
});

注意,目前的 Load()/Case>事件似乎是,所以你应该考虑你使用的jQuery版本。

< P>这是已知的问题,<>代码>每个< /代码>

你可以这样做

    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好啊有没有办法替换它?