【发布时间】:2019-07-10 20:43:37
【问题描述】:
我有以下Codepen,显示了我创建的一个简单下拉列表。人们会注意到,有时单击向下箭头时会选择所有包含的文本。
如何阻止所有文本/内容在活动时自动选择,同时保留用户手动选择文本的选项?
$(document).ready(function() {
// Open first panel automatically
$(".accordion_trigger")[0].nextElementSibling.classList.add("active");
$(".accordion_trigger")[0].lastElementChild.classList.replace(
"fa-chevron-down",
"fa-chevron-up"
);
// Click event listener
$(".accordion_trigger").on("click", function() {
// Show panel on click
this.nextElementSibling.classList.toggle("active");
// update the font-awesome icon up/down
const fa = this.lastElementChild.classList;
fa.contains("fa-chevron-down")
? fa.replace("fa-chevron-down", "fa-chevron-up")
: fa.replace("fa-chevron-up", "fa-chevron-down");
// Remove all other chevron down icons
const chevrons = $(".fa-chevron-up").filter(
(index, item) => item != this.lastElementChild
);
for (var item of chevrons) {
item.classList.replace("fa-chevron-up", "fa-chevron-down");
}
// Hide all other panels on click
const others = $(".accordion_trigger").filter(
(index, item) => item != this
);
for (var item of others) {
item.nextElementSibling.classList.remove("active");
}
});
});
为了复制这一点,请导航到页面,然后快速关闭并重新打开文本。请注意,Firefox 或 Edge 不会出现此问题。
<div class="accordion">
<ul class="accordion_ul">
<li class="accordion_trigger">
<h5>Test Entry</h5>
<i class="fas fa-chevron-down"></i>
</li>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<li class="accordion_trigger">
<h5>Test Entry</h5>
<i class="fas fa-chevron-down"></i>
</li>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</ul>
</div>
【问题讨论】:
-
没有为我选择文本。
-
我已经用 chrome 检查了你的笔,打开手风琴项时不会选择任何文字
-
我也一样,没有选择文字
-
编辑了复制说明的帖子。快速关闭并重新打开。
-
忘记密码笔。编辑您的问题以包含minimal reproducible example。链接烂了。
标签: javascript jquery