gpt4 book ai didi

javascript - 有什么方法可以使 onClick 全局或 DRY 吗?

转载 作者:行者123 更新时间:2023-11-30 20:23:34 24 4
gpt4 key购买 nike

$("input").on("keypress",function(e){
if(e.which===13){
$("ul").last().append("<li>"+$(this).val()+"</li>");
}
$("li").on("click",function(){
$(this).toggleClass("striked");
});

$("li").on("mouseenter",function(){
$(this).css("color","green");
});
});
$("li").on("click",function(){
$(this).toggleClass("striked");
});
$("li").on("mouseenter",function(){
$(this).css("color","green");
});
$("#slide").on("click",function(){
$("input").slideToggle();
});

在这里,我使用了 onClick事件 <li>两次应用 striked 类只是为了使其适用于页面上的动态和非动态元素。但是代码是复制的并且看起来很长。有什么方法可以缩短,以便我可以编写一次并为两种类型的元素激活

最佳答案

改为在 ul 上使用事件委托(delegate),因此您只需一次设置监听器,而不是为加载的每个元素设置多个监听器 在每个 .append 上。此外,将 ulinput jQuery 包装的元素保存在一个变量中一次,而不是每次选择它们并用 jQuery 包装它们'重新使用:

const $ul = $("ul");
const $input = $("input");
$input.on("keypress", function(e) {
if (e.which === 13) {
$ul.last().append("<li>" + $(this).val() + "</li>");
}
});

$ul.on("click", 'li', function() {
$(this).toggleClass("striked");
});
$ul.on("mouseenter", 'li', function() {
$(this).css("color", "green");
});
$("#slide").on("click", function() {
$input.slideToggle();
});

关于javascript - 有什么方法可以使 onClick 全局或 DRY 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51186887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com