【发布时间】:2021-08-03 10:41:39
【问题描述】:
我用物化库做了一个下拉菜单。它包含项目列表。现在我想在所有项目的底部查看更多链接。该链接已成功添加,但问题是当我单击该链接下拉/选择时会关闭。
const select = document.querySelector("select");
const fillSelect = (newOptions) => {
const options = select.querySelectorAll("option");
options.forEach((x) => x.remove());
newOptions.forEach((opt) => {
const optionElement = document.createElement("option");
optionElement.innerHTML = opt;
select.appendChild(optionElement);
});
updateSelect();
};
const addViewMoreLink = () => {
const link = document.createElement('div');
link.innerHTML = 'View more';
link.addEventListener('click', e => {
e.preventDefault();
e.stopPropagation();
return false;
})
const dropdownContent = select.parentNode.querySelector(".dropdown-content");
dropdownContent.appendChild(link);
}
const updateSelect = () => {
window.M.FormSelect.init(select, {});
}
window.onload = function(){
fillSelect(["Option 1", "Option 2", "Option 3"]);
addViewMoreLink()
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!-- Compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<select id="organization-input">
</select>
我希望当我单击更多视图时,它应该关闭选择/下拉内容并显示新选项。添加新选项不是问题。目前的问题是,即使我使用了 stop e.stopPropagation();
【问题讨论】:
-
我确信这可以在本地完成,还没有时间解决问题,但您可以尝试使用 onCloseEnd,我可能稍后会继续查看,因为我不是确定 css hack 是最好的方法jsfiddle.net/bxd18zse/1
-
“我希望当我点击更多视图时它应该关闭选择/下拉内容并显示新选项。” - 你可以使用 2 个选择吗?
-
@Maheer Ali 您能否更具体地说明您要实现的用户体验行为?如果用户单击“查看更多”,选择下拉菜单是否应该保持打开但选项会改变?还是应该是一个截断的列表,点击后会展开为完整列表?
-
@maqam7 当用户点击查看更多时,UI 选项应该会改变。应添加更多选项,下拉菜单应保持打开状态。
标签: javascript html css materialize