Это чистое решение для JavaScript без каких-либо библиотек или плагинов:
document.addEventListener('click', function (e) {
if (hasClass(e.target, 'bu')) {
// .bu clicked
// Do your thing
} else if (hasClass(e.target, 'test')) {
// .test clicked
// Do your other thing
}
}, false);
, где hasClass
-
function hasClass(elem, className) {
return elem.className.split(' ').indexOf(className) > -1;
}
Кредит относится к Dave и Sime Vidas
Использование более современных JS, hasClass
может быть реализовано как:
function hasClass(elem, className) {
return elem.classList.contains(className);
}
Существуют две отличия между формой оболочки и формой exec. Согласно документация , форма exec является предпочтительной формой. Это два отличия:
Форма exec анализируется как массив JSON, что означает, что вы должны использовать двойные кавычки (") вокруг слов, а не одиночных кавычек (').
В отличие от формы оболочки форма exec не вызывает командную оболочку. Это означает, что нормальной обработки оболочки не происходит. Например, CMD ["echo", "$ HOME"] не будет делать замену переменных в $ HOME. Если вы хотите обработать оболочку, то либо используйте форму оболочки, либо выполните оболочку напрямую, например: CMD ["sh", "-c", "echo $ HOME"]. При использовании формы exec и непосредственного выполнения оболочки, как и в случае с формой оболочки, это оболочка, которая выполняет расширение переменной среды, а не докер.
blockquote>Некоторые дополнительные тонкости здесь являются:
Форма exec позволяет избежать перебора строк оболочки и команд RUN с использованием базового изображения, которое не содержит указанный исполняемый файл оболочки.
В shell form, вы можете использовать \ (обратную косую черту), чтобы продолжить одну инструкцию RUN на следующую строку.
blockquote>Существует также третья форма для
CMD
:CMD ["param1", "param2"] (как параметры по умолчанию для ENTRYPOINT)
blockquote>Кроме того, форма exec необходима для
CMD
, если вы используете его как параметры / аргументы дляENTRYPOINT
, которые должны быть перезаписаны.