通過 $.ajax 或 append() 動態插入 HTML 菜單,原有 click 事件不生效;直接寫在頁面的同樣菜單正常工作。
$(selector).click(fn) / .on('click', fn) **僅綁定當前已存在的元素**。動態創建的元素不在初始綁定集合中,故無事件處理器。
// 綁定到靜態父容器(如 document、body 或最近不動的祖先)
$(document).on('click', '.menu-item', function() {
// this 指向觸發的 .menu-item 元素
$(this).next('.sub-menu').slideToggle();
});
document,jQuery 判斷目標是否匹配選擇器。
$('#container').append(htmlString);
// 重新綁定
$('#container .menu-item').off('click').on('click', function() { ... });
.off() 防重複。
var html = '<a onclick="toggleMenu(this)">菜單</a>';
$(staticParent).on(event, dynamicSelector, handler)。#menu-container),減少冒泡路徑。.off() 清理舊綁定。