(function () { function init() { var root = document.querySelector('[data-jmd-lang="zh"]'); if (!root || root.dataset.ready) return; root.dataset.ready = "1"; var pill = root.querySelector('.jmd-lang__pill'); var link = root.querySelector('a.jmd-lang__opt'); var thumb = root.querySelector('.jmd-lang__opt--active'); var dir = 1; /* 1 = slide right to switch, -1 = slide left to switch */ var maxShift = link.offsetLeft - thumb.offsetLeft; var startX = null, startY = null, dx = 0, swiped = false; function go() { swiped = false; link.click(); } function reset() { thumb.style.transform = ""; pill.classList.remove("is-dragging"); startX = null; } pill.addEventListener("pointerdown", function (e) { startX = e.clientX; startY = e.clientY; dx = 0; swiped = false; try { pill.setPointerCapture(e.pointerId); } catch (err) {} maxShift = link.offsetLeft - thumb.offsetLeft; }); pill.addEventListener("pointermove", function (e) { if (startX === null) return; dx = e.clientX - startX; var dy = e.clientY - startY; if (Math.abs(dx) < 6 || Math.abs(dx) < Math.abs(dy)) return; pill.classList.add("is-dragging"); var shift = Math.max(Math.min(dx, Math.max(maxShift, 0)), Math.min(maxShift, 0)); thumb.style.transform = "translateX(" + shift + "px)"; }); pill.addEventListener("pointerup", function () { if (startX === null) return; var moved = Math.abs(dx) >= 25; if (moved) { swiped = true; if (dx * dir > 0) { thumb.style.transition = "transform 0.15s ease"; thumb.style.transform = "translateX(" + maxShift + "px)"; setTimeout(function () { thumb.style.transition = ""; reset(); go(); }, 150); return; } } reset(); }); pill.addEventListener("pointercancel", reset); /* Tap anywhere on the switch (including the current language) toggles it */ pill.addEventListener("click", function (e) { if (swiped) { e.preventDefault(); swiped = false; return; } if (e.target.closest("a.jmd-lang__opt")) return; /* the link handles itself */ go(); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } window.addEventListener("load", init); })();

Hi, I'm Jessica!

6年前從法律轉職,隻身從香港來到倫敦追尋演奏夢。
現在,我是一位在倫敦生活、在英國與亞洲演出的鋼琴家。
🎹 現在進行中:100日報考音樂學院
記錄我再次準備英國音樂學院考試的100天。

Video

過往精選音樂會與藝術企劃

隱私權與 Cookie 政策

(function () { function init() { var root = document.querySelector('[data-jmd-lang="en"]'); if (!root || root.dataset.ready) return; root.dataset.ready = "1"; var pill = root.querySelector('.jmd-lang__pill'); var link = root.querySelector('a.jmd-lang__opt'); var thumb = root.querySelector('.jmd-lang__opt--active'); var dir = -1; /* 1 = slide right to switch, -1 = slide left to switch */ var maxShift = link.offsetLeft - thumb.offsetLeft; var startX = null, startY = null, dx = 0, swiped = false; function go() { swiped = false; link.click(); } function reset() { thumb.style.transform = ""; pill.classList.remove("is-dragging"); startX = null; } pill.addEventListener("pointerdown", function (e) { startX = e.clientX; startY = e.clientY; dx = 0; swiped = false; try { pill.setPointerCapture(e.pointerId); } catch (err) {} maxShift = link.offsetLeft - thumb.offsetLeft; }); pill.addEventListener("pointermove", function (e) { if (startX === null) return; dx = e.clientX - startX; var dy = e.clientY - startY; if (Math.abs(dx) < 6 || Math.abs(dx) < Math.abs(dy)) return; pill.classList.add("is-dragging"); var shift = Math.max(Math.min(dx, Math.max(maxShift, 0)), Math.min(maxShift, 0)); thumb.style.transform = "translateX(" + shift + "px)"; }); pill.addEventListener("pointerup", function () { if (startX === null) return; var moved = Math.abs(dx) >= 25; if (moved) { swiped = true; if (dx * dir > 0) { thumb.style.transition = "transform 0.15s ease"; thumb.style.transform = "translateX(" + maxShift + "px)"; setTimeout(function () { thumb.style.transition = ""; reset(); go(); }, 150); return; } } reset(); }); pill.addEventListener("pointercancel", reset); /* Tap anywhere on the switch (including the current language) toggles it */ pill.addEventListener("click", function (e) { if (swiped) { e.preventDefault(); swiped = false; return; } if (e.target.closest("a.jmd-lang__opt")) return; /* the link handles itself */ go(); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } window.addEventListener("load", init); })();

Hi, I'm Jessica!

Six years ago, I left law in Hong Kong to pursue piano in London.
Today, I’m a London-based pianist performing in the UK and Asia.
🎹 Now in progress:100 Days to Conservatoire Audition
Documenting 100 days of preparing for another UK conservatoire audition.

Video

Selected Past Concerts & Projects

Privacy & Cookie Policy

You're on the list! · 已收到你的登記!🎹

Thank you for your interest in Beyond the Expected!I'll be in touch once the Hong Kong recital details and ticket arrangements are confirmed. Keep an eye on your inbox!---多謝你對《Beyond the Expected 既定之外》香港鋼琴獨奏會的支持!待演出詳情及購票安排確認後,我會透過電郵通知你。期待在香港與你分享音樂!🤍