$APPLICATION->IncludeFile
есть свои плюсы. Конечно придется сделать return $pageElementCount, но зато ты, как путевый программист получаешь возможность гибкого переиспользования кода. Конечно при таком малом объеме кода польза от этого мало ощутима, но все равно круто..$APPLICATION->IncludeFile
. Вторым параметром в эту функцию можно передавать массив параметров, которые будут доступны внутри файла в массиве $arParams, тогда можно сделать что-то вроде такого:$pageElementCount = $APPLICATION->IncludeFile(SITE_DIR."/include/inc_sort_include.php", Array('COUNTS' => array(18, 36, 54, 72), 'DEFAULT_COUNT' => 10), Array("MODE" => "php", "NAME" => ""));
<?
$arAvailableCounts = $arParams['COUNTS'];
$pageElementCount = isset($_COOKIE['showBy']) && intval($_COOKIE['showBy']) ? $_COOKIE['showBy'] : $arParams['DEFAULT_COUNT'];
if(isset($_GET['showBy']) && $_GET['showBy'] && in_array($_GET['showBy'], $arAvailableCounts)) {
$pageElementCount = $_GET['showBy'];
setcookie('showBy', $_GET['showBy'], 0, SITE_DIR);
}
?>
<div class="text-right">
<span class="show_title">Показать по </span>
<span class="number_list">
<?foreach($arAvailableCounts as $value):?>
<a class="<?=($value == $pageElementCount ? 'current' : '');?>" href="<?=$APPLICATION->GetCurPageParam('showBy='.$value, array('showBy'));?>" rel="nofollow"><span><?=$value;?></span></a>
<?endforeach;?>
</span>
</div>
<?return $pageElementCount;?>
$APPLICATION->IncludeFile
со своими параметрами$pageElementCount = $APPLICATION->IncludeFile(SITE_DIR."/include/inc_sort_include.php", Array('COUNTS' => array(5, 10, 15), 'DEFAULT_COUNT' => 10), Array("MODE" => "php", "NAME" => ""));
$('.sortable-ui').sortable({
items: ".order_box:not(.nosort)",
connectWith: '.sortable-ui',
update: async function(event, ui) {
await (function() {
var id = ui.item.closest('.order_list').data('column');
ui.item.attr('data-column-item', id).addClass('updated');
})();
await $(this).children().each(function (index){
if ($(this).attr('data-position') != (index+1)) {
$(this).attr('data-position', (index+1)).addClass('updated'); // подставляю класс updated если изменилась позиция
}
});
saveNewPositions(); // это поиск классов $('.updated').each(function () {...}
}
}).disableSelection();
var id = ui.item.parent().closest('.order_list').data('column');
$('.sortable-ui').sortable({
items: ".order_box:not(.nosort)",
connectWith: '.sortable-ui',
update: async function(event, ui) {
var id = ui.item.parent().closest('.order_list').data('column');
ui.item.attr('data-column-item', id).addClass('updated'); // подставляю класс updated если изменилась колонка
await $(this).children().each(function (index){
if ($(this).attr('data-position') != (index+1)) {
$(this).attr('data-position', (index+1)).addClass('updated'); // подставляю класс updated если изменилась позиция
}
});
saveNewPositions(); // это поиск классов $('.updated').each(function () {...}
}
}).disableSelection();
Если на первую вешаю то вторая не успевает отработать...
var arr = [];
for(let i = 0; i < 5000; i++) {
arr[i] = Math.floor(Math.random() * 300);
}
$(arr).each(function(index) {
console.log('each');
}).promise().done(function() {
console.log('stop');
});
function a() {
$a = 1;
}
$a = a();
echo 'a = '.$a;
function a() {
return $a = 1;
}
$a = a();
echo 'a = '.$a;
function JCSmartFilter(ajaxURL, viewMode, params)
{
this.ajaxURL = ajaxURL;
this.form = null;
this.timer = null;
this.cacheKey = '';
this.cache = [];
this.popups = [];
this.inputsPrice = {};
this.viewMode = viewMode;
if (params && params.SEF_SET_FILTER_URL) {
this.bindUrlToButton('set_filter', params.SEF_SET_FILTER_URL);
this.sef = true;
}
else {
this.bindUrlToButton('set_filter', window.location.href);
}
if (params && params.SEF_DEL_FILTER_URL) {
this.bindUrlToButton('del_filter', params.SEF_DEL_FILTER_URL);
}
else {
this.bindUrlToButton('del_filter', ajaxURL);
}
}
if (params && params.SEF_SET_FILTER_URL) {
this.bindUrlToButton('set_filter', params.SEF_SET_FILTER_URL);
this.sef = true;
}
else {
this.bindUrlToButton('set_filter', window.location.href);
}
if (params && params.SEF_DEL_FILTER_URL) {
this.bindUrlToButton('del_filter', params.SEF_DEL_FILTER_URL);
}
else {
this.bindUrlToButton('del_filter', ajaxURL);
}
else {
this.bindUrlToButton('set_filter', BX.util.htmlspecialcharsback(result.FILTER_URL));
}
$arHiddens = array();
foreach($arResult['HIDDEN'] as $arHidden) {
$arHiddens[] = $arHidden['CONTROL_NAME'].'='.$arHidden['HTML_VALUE'];
}
if($arHiddens) {
$arResult['FORM_ACTION'] = $arResult['FORM_ACTION'].'?'.implode('&', $arHiddens);
}