GUID (Globally Unique Identifier) — статистически уникальный 128-битный идентификатор.
function guid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
Результат: 9e24e277-8524-812a-9c3f-4930444d74de
Часто бывает необходимо удалить классы, начинающиеся с определенной строки.
Например: has-state-active
, has-state-pending
, has-state-disabled
.
Простейший и очевидный способ - это использовать символы подставноки: has-state-*
.
"Золотые" правила оптимизации фронтэнда часто рекомендуют подключать все JS скрипты в конце страницы.
Однако обычно нам строго необходимо подлючать <script src="//jquery.js">
в <head>
страницы, и мы не можем его оттуда удалить, поскольку контент страницы может содержать onReady-обработчики, например $(function(){ ... })
. Такие обработчики обычно вставляются автоматически сторонними виджетами, CMS, фреймворками.
Этот короткий скрипт позволяет переместить подключение jquery.js
из <head>
в конец <body>
без изменения имеющихся onReady-обработчиков на странице.
Не мое. Взято отсюда https://gist.github.com/mudassir0909/ed7eceb5d20e65721f63
Selectize.define( 'clear_selection', function ( options ) {
var self = this;
//Overriding because, ideally you wouldn't use header & clear_selection simultaneously
self.plugins.settings.dropdown_header = {
title: 'Clear Selection'
};
this.require( 'dropdown_header' );
self.setup = (function () {
var original = self.setup;
return function () {
original.apply( this, arguments );
this.$dropdown.on( 'mousedown', '.selectize-dropdown-header', function ( e ) {
self.setValue( '' );
self.close();
self.blur();
return false;
});
}
})();
});
Плавная сортировка вертикальных элементов.
Главной задачей было добиться максимальной быстрой скорости сортировки и отрисовки, без лишних действий. Данный плагин предназначен для узкого списка задач, по этому на супер функциональность в нём можете не рассчитывать.
Так же есть AssetBundle для Yii2 SmoothSortAsset
В своей работе мне понадобилось создать REST интерфейс, и обращаться на бек через GET параметры. Привожу сниппет в нескольких примерах на JS и JQ.
//JS версия
var obj = {
param1: 'something',
param2: 'somethingelse',
param3: 'another',
bla: {
param5: 'i\'m nested!',
ja: {
param6: 'i am really nested'
}
}
};
var serialiseObject = function(obj) {
var pairs = [];
for (var prop in obj) {
if (!obj.hasOwnProperty(prop)) {
continue;
}
if (Object.prototype.toString.call(obj[prop]) == '[object Object]') {
pairs.push(serialiseObject(obj[prop]));
continue;
}
pairs.push(prop + '=' + obj[prop]);
}
return pairs.join('&');
}
console.log(serialiseObject(obj));
// param1=something¶m2=somethingelse¶m3=another¶m5=i'm nested!¶m6=i am really nested
// jQuery версия
var params = { width:1680, height:1050 };
var str = jQuery.param( params );
console.log(str)
// width=1680&height=1050
Исходные данные:
Скрипт должен отработать при открытии Балуна:
objectManager.objects.events.add('balloonopen', function (e) {
$('[data-toggle="tooltip"]').tooltip();
});
Проблема у меня, и у многих, кого я прочитал в Интернете складывается из-за того, что пытаются выполнить скрипт методом "open". "balloonopen" позволяется работать с данными именно после открытия Балуна
Если вам нужно, чтобы открытый popover
в Boostrap 3 по наведению не скрывался, пока курсор на самом popover
, вам поможет следующее решение.
Демо
Для этого необходимо выставить параметр "hideIconOnBalloonOpen" в значение false:
// Создаем метку.
var placemark = new ymaps.Placemark([56.75,60.62], {
balloonContent: '...',
iconContent: "..."
}, {
preset: "islands#lightBlueDotIcon",
// Балун открывается, метка при этом не закрывается
hideIconOnBalloonOpen: false
});
geoMap.geoObjects.add(placemark);
Либо, если используете objectManager:
var myObjectManager = new ymaps.ObjectManager({
clusterize: true,
geoObjectOpenBalloonOnClick: false
});
objectsAll.push({
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [56.75,60.62]
},
options: {
// Балун открывается, метка при этом не закрывается
hideIconOnBalloonOpen: false
}
});
myObjectManager.add(objectsAll);
myMap.geoObjects.add(myObjectManager);
Эту функцию удобно использовать для вывода чисел пользователю.
var roundCount = function (number) {
if (number > 999 && number <= 999999){
return number / 1000 + 'k';
} else if (number > 999999){
return '>1M';
}
return number;
};