Как я могу сделать этот код эффективным за счет цикла?

Я впал в это. Я прочитал и протестировал все возможные решения, которые были даны ранее. Проверка пути сборки, сборка, перестройка, очистка, перезапуск IIS и VS2015, переустановка всех пакетов nuget, их компиляция один за другим и т. Д. ...

Я вдруг вспомнил, что VS хранит некоторые ASP-файлы в системе папок ... Я думаю, что я должен попробовать, в конце концов, это может стать хуже. Итак, я опустел:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

И все снова работает ... Странно, что эта проблема имеет такие разные возможные решения ...

0
задан P Bateman 15 January 2019 в 16:37
поделиться

3 ответа

Переписать его как-то более эффективно.

$('.carousel').each(function(){ 
    var $carousel = $(this);
    $carousel.find("li").each(function(index){
        $(this).addClass('thumbnail'+index); 
        $(this).css('background-image', 'url(' + $carousel.find('.item:nth-child(index) img').attr('src') + ')');
    });  
});  

Хранение вашей карусели в объеме ее each() позволяет вам взаимодействовать с ней в объеме ваших li each(). Нет необходимости объявлять отдельную переменную i, так как первый аргумент, переданный функции в вызове each(), является индексом текущего элемента.

0
ответ дан Justin Pearce 15 January 2019 в 16:37
поделиться
var that = this;
$(this).find("li").each(function(index){
    var imgSrc = $(that).find('.item:nth-child(' + (index+1) + ') img').attr('src');
    $(this).css('background-image', 'url(' + imgSrc + ')');
});  

Я думаю, что это имеет больше смысла, чем то, что вы делаете. Функция jquery .each имеет Index в качестве первого аргумента, поэтому вы можете найти соответствующий элемент .ite с тем же индексом, если это то, что вам нужно

0
ответ дан TKoL 15 January 2019 в 16:37
поделиться

Когда вы используете функцию $ .each (), вы можете передать ей несколько аргументов. Например:

$(this).find("li").each(function(i, o){ });

Где i - индекс, а o - сам объект (в вашем случае, элемент li ). Итак, вы можете попробовать сделать это:

$(this).find("li.thumbnail" + i).css('background-image', 'url(' + $(this).find('.item:nth-child('+ (i - 1) + ') img').attr('src') + ')');
0
ответ дан Ives Iure M. Ancelmo 15 January 2019 в 16:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: