Вот toggleClass для переключения / добавления / удаления класса в элементе:
// If newState is provided add/remove theClass accordingly, otherwise toggle theClass
function toggleClass(elem, theClass, newState) {
var matchRegExp = new RegExp('(?:^|\\s)' + theClass + '(?!\\S)', 'g');
var add=(arguments.length>2 ? newState : (elem.className.match(matchRegExp) == null));
elem.className=elem.className.replace(matchRegExp, ''); // clear all
if (add) elem.className += ' ' + theClass;
}
см. jsfiddle
также см. мой ответ здесь для динамического создания нового класса
Повышение организовано несколькими членами стандартного комитета.
, Таким образом, это - нерестилище для библиотек, которые будут в следующем стандарте.
С tr1, подходящим скоро, хорошо знать, что повышение уже имеет много покрытой земли. Много библиотек в tr1 в основном адаптировано непосредственно из оригиналов повышения и таким образом было проверено на практике. Различие - то, что они были перемещены в станд.:: пространство имен tr1 (а не повышение).
Все, что необходимо сделать, добавляют, что следующие к значению по умолчанию компиляторов включают путь поиска :
<boost-install-path>/boost/tr1/tr1
Тогда то, когда Вы будете включать стандартное повышение заголовков, автоматически импортирует весь необходимый материал в станд. пространства имен:: tr1
Для использования станд.:: tr1:: share_ptr просто необходимо включать < memory>. это даст Вам все интеллектуальные подсказки с одним файлом.
Можно просто читать страница Boost Background Information для получения быстрого обзора того, почему необходимо использовать Повышение и для чего можно использовать его. Стоимостью в несколько минут это берет.
99%-е портативное устройство.
я сказал бы, что это имеет довольно много библиотек, которые действительно полезны, как только Вы обнаруживаете потребность, которая решена повышением. Или Вы кодируете его сами, или Вы пользуетесь очень солидной библиотекой. Имение от отложить источника для материала как Мультииндекс, Лямбда, Опции Программы, RegEx, SmartPtr и Кортеж удивительно...
лучшая вещь состоит в том, чтобы провести некоторое время, проходя документацию для различных библиотек и оценивая, могло ли это иметь какое-либо применение для Вас.
Достойный!!
Вы получаете много вещей, которые прибывают в C++ 0x. Но кроме той общности, некоторые лучшие специфические особенности являются простым regex библиотека , библиотека кастинга для кастинг от строк до ints (Лексический бросок):
int iResult = 0;
try
{
iResult = lexical_cast<int>("4");
}
catch(bad_lexical_cast &)
{
cout << "Unable to cast string to int";
}
А библиотека даты/времени , среди других...
using namespace boost::gregorian;
date weekstart(2002,Feb,1);
date thursday_next = next_weekday(weekstart, Thursday); // following Thursday
существует также интерфейс Python (Повышение Python), лексический анализатор/синтаксический анализатор DSL (Дух Повышения):
// A grammar in C++ for equations
group = '(' >> expression >> ')';
factor = integer | group;
term = factor >> *(('*' >> factor) | ('/' >> factor));
expression = term >> *(('+' >> term) | ('-' >> term));
и это просто царапает поверхность...
Повышение является большим, но просто игра Адвоката Дьявола вот является некоторыми причинами, почему Вы не можете хотеть использовать Повышение:
Все это не означает, что Вы не должны взглянуть на Повышение, кодируют и получают некоторое представление сами, даже если Вы не используете Повышение как есть
Преимущества повышения: это широко доступно, портирует на любой современный компилятор C++ или о любой платформе.
функции являются независимой платформой, Вы не должны изучать дизайн нового потока для каждой новой платформы.
Это инкапсулирует много платформы определенные функции, как файловые системы стандартным способом.
Это - то, с чем должен был поставляться C++! Большая популярность Java была, это поставляется со стандартной библиотекой, чтобы сделать симпатичный очень все, что Вы хотели. C++, к сожалению, только наследовал ограниченные стандартные функции C/Unix.
Все вышеупомянутое, плюс он поощряет много современных методов C++ лучшей практики. Это имеет тенденцию улучшать качество Вашего кода.
Повышение является набором библиотек C++. 10 из которых включаются в tr1 C++ 0x.
Вы можете начинать с повышением здесь .
shared_ptr
и weak_ptr
, особенно в многопоточном коде, один стоящий установки повышение. BOOST_STATIC_ASSERT
также довольно прохладно для того, чтобы сделать проверку логики времени компиляции.
то, что много классов и утилит в повышении находится в заголовках, означая Вас, может получить большую функциональность, не имея необходимость компилировать что-либо вообще, также плюс. Мобильность обычно не является проблемой, если Вы не используете чрезвычайно старый компилятор. Я когда-то пытался заставить MPL работать с VC6, и это распечатало 40 000 ошибок предупреждений / внутренних ошибок прежде, чем взорваться полностью. Но в целом большая часть библиотеки должна работать независимо от Вашей платформы или поставщика компилятора.
Учитывают то, что довольно много вещей от Повышения уже находятся в TR1 и скорее всего будут в следующем пересмотре библиотеки стандарта C++. Это - довольно большое подтверждение.
Повышение является набором рассмотренных библиотек C++ высококачественного однорангового узла, которые делают акцент на мобильности и правильности. Это действует как defacto открытая демонстрационная площадка для новых дополнений к языку и стандартной библиотеке. Проверьте их веб-сайт для получения дополнительной информации.
Повышение является очень обширной библиотекой (обычно) универсальных конструкций, которые могут помочь почти в любом приложении. Это может показать то, что много компонентов повышения было включено в C++ 0x спецификации.
Это также портативно, по крайней мере, через основные платформы и должно быть портативно к почти чему-либо с главным образом стандарты совместимый компилятор C++.
единственное предупреждение состоит в том, что может быть много смешанных зависимостей между библиотеками повышения, делая его тяжелее для выбирания просто определенного компонента для распределения (кроме всей библиотеки повышения).
Также обратите внимание, что большая часть повышения является шаблонами, так не требует здания
(просто включают корректные заголовочные файлы).
Несколько частей, которые действительно требуют здания, являются дополнительными:
Они могут каждый быть созданы, независимо таким образом предотвратив ненужное чрезмерное увеличение размера для ненужного кода.