Я бы не назвал это красивым, но вот метод, использующий map
:
let numbers = ["1","2","3","4","5","6","7"]
let splitSize = 2
let chunks = numbers.startIndex.stride(to: numbers.count, by: splitSize).map {
numbers[$0 ..< $0.advancedBy(splitSize, limit: numbers.endIndex)]
}
Метод stride(to:by:)
дает вам индексы для первого элемента каждого фрагмента, так что вы можете сопоставьте эти индексы с срезом исходного массива, используя advancedBy(distance:limit:)
.
Более «функциональный» подход просто состоял бы в том, чтобы перезаписать массив, например:
func chunkArray<T>(s: [T], splitSize: Int) -> [[T]] {
if countElements(s) <= splitSize {
return [s]
} else {
return [Array<T>(s[0..<splitSize])] + chunkArray(Array<T>(s[splitSize..<s.count]), splitSize)
}
}
Вы инициализировали все элементы, которые имеют атрибут data-toggle="tooltip"
, используя делегирование контейнера элементов (тела) ( fiddle ):
$("body").tooltip({ selector: '[data-toggle=tooltip]' });
, поэтому для того, чтобы отключите его, используя уничтожить, вам нужно сделать это на теле:
$('body').tooltip('dispose');
Если вы хотите сделать это без делегирования, вы можете инициализировать каждый из элементов ( скрипт ):
$('[data-toggle="tooltip"]').tooltip();
и уничтожить его:
$('[data-toggle="tooltip"]').tooltip('dispose'); // used in v4
$('[data-toggle="tooltip"]').tooltip('destroy'); // used in v3 and older
Если вы все еще хотите инициализировать делегирование корыта и остановить его от работы с помощью disable ( скрипт ):
$('body').tooltip({ selector: '[data-toggle=tooltip]' });
$('body [data-toggle="tooltip"]').tooltip('disable');
Объяснение о различии между уничтожением и отключением, взятым из Ответ Жасни :
$('[rel=tooltip]').tooltip() // Init tooltips
$('[rel=tooltip]').tooltip('disable') // Disable tooltips
$('[rel=tooltip]').tooltip('enable') // (Re-)enable tooltips
$('[rel=tooltip]').tooltip('dispose') // Hide and destroy tooltips
Это ответ, который я получил в Bootstraps github - Поскольку вы используете делегирование (т. е. вариант селектора), я считаю, что есть только один экземпляр всплывающей подсказки (на теле). Таким образом, попытка уничтожения несуществующих экземпляров всплывающих подсказок на самих элементах триггера не влияет. Сравните не делегированную версию: http://jsfiddle.net/zsb9h3g5/1/
Чтобы уничтожить всплывающие подсказки внутри #settings
, сделайте следующее:
$('#settings [data-toggle="tooltip"]').tooltip('destroy');
Выбранный ответ уничтожает всплывающие подсказки, чтобы они полностью исчезли, и их функциональность отключена.
Если вы просто хотите избавиться от всех всплывающих подсказок одновременно, сохраняя их функциональность, используйте $('.tooltip').remove();
.
Начиная с версии загрузки 4 и в соответствии с документацией, вы должны использовать dispose , поскольку destroy
больше не определен. Пример приведен ниже:
$('#element').tooltip('dispose')