
本文介绍了如何使用 JavaScript 获取 HTML
理解 closest() 方法
在 JavaScript 中,closest() 方法用于查找与指定选择器匹配的第一个祖先元素。在上述问题中,代码使用了 opt.closest('optgroup').attr('label') 来获取父级
嵌套 的问题
嵌套
替代方案
如果需要实现类似分组的效果,可以考虑以下替代方案:
-
扁平化结构 + 数据属性: 将
标签移除,并使用数据属性来标识每个 然后,可以使用 JavaScript 获取选定
$('select').change(function () { var opt = $(this).find(':selected'); var group = opt.data('group'); console.log(group); // Main }); -
使用 JavaScript 手动构建选项: 完全移除
标签,并使用 JavaScript 根据数据动态生成 const data = [ { group: 'Main', value: '46', text: 'Test' }, { group: 'Main', value: '47', text: 'Test2' }, { group: 'Main', value: '48', text: 'Test3' }, ]; const select = document.getElementById('categoryg'); data.forEach(item => { const option = document.createElement('option'); option.value = item.value; option.textContent = item.text; option.dataset.group = item.group; select.appendChild(option); }); $('select').change(function () { var opt = $(this).find(':selected'); var group = opt.data('group'); console.log(group); // Main }); -
遍历 DOM 树: 如果确实需要获取 "Main"
的标签,并且确定 HTML 结构不变,可以使用 parents() 或 parent() 方法向上遍历 DOM 树,直到找到目标 标签。 但是这种方法依赖于特定的 HTML 结构,可维护性较差。 $('select').change(function () { var opt = $(this).find(':selected'); var og = opt.closest('optgroup').parent().closest('optgroup').attr('label'); console.log(og); // Main });注意: 这种方法依赖于固定的 HTML结构,如果HTML结构发生变化,代码将失效。
总结
获取父级










