在悬停追加一次跨度
at hover append span one time
这是我的html:
<ul>
<li>Milk</li>
<li>Bread</li>
<li class='fade'>Chips</li>
<li class='fade'>Socks</li>
</ul>
这是我的js函数:-
$("li").hover(
function () {
$(this).append($("<span> ***</span>"));
},
function () {
$(this).find("span:last").remove();
}
);
我想要这样的输出:-
<ul>
<li>Milk</li>
<li>Bread</li>
<li class='fade'>Chips</li>
<li class='fade'>Socks</li>
<span> ***</span>
</ul>
这里我尝试在鼠标悬停在li上添加一个span。
它的工作很完美。
但是我只想在最后一个li后面追加一次。
谢谢。
我在jQuery api手册上找到了这个例子,这不是你想要的吗?
$("li").hover(
function () {
$(this).append($("<span> ***</span>"));
},
function () {
$(this).find("span:last").remove();
}
);
或者你不想在鼠标离开时删除span,而只想添加一个span:
$("li").hover(function () {
if ($(this).find('span').length == 0) {
$(this).append($("<span> ***</span>"));
}
});
使用one
:
$("li").one("hover", function () {
$(this).append($("<span> ***</span>"));
});
http://api.jquery.com/one/先检查span是否已经存在。记住,如果你想在鼠标离开后移除跨度,'hover'可以有两个函数。这相当于mouseover和mouseleave的组合。
$("li").hover(
function () {
if ($(this).is(':empty')) {
$(this).append($("<span> ***</span>"));
}
});
参考:hover, empty, mouseover, mouseleave
使用现代JS!
const lis = document.getElementsByTagName("li");
let span;
for (const li of lis) {
li.addEventListener("mouseover", function() {
// Do something cool
if (!span) {
span = document.createElement("span");
span.innerText = " ***";
li.parentElement.append(span);
}
}, {once : true}); // (optional) This will make it fire only once for each li
// You could add one "once" listener to just the ul as well
}
文档,CanIUse
相关文章:
- 每次鼠标悬停触发一次 jquery 效果
- 地图,rails 4.2,javascript,鼠标悬停,只工作一次(或两次).然后在重新加载之后
- 一次高亮显示一个城市,并在悬停其他城市时删除颜色填充
- jQuery悬停只工作一次
- 如何保持一次显示一个悬停
- 在鼠标悬停时添加事件,如何只添加一次事件
- 多个Google+圈子一次悬停不正确
- Iframe只在鼠标悬停时加载一次
- jQuery悬停动画期间的最后一次潜水闪烁
- 鼠标悬停只工作一次?JQuery
- JS悬停链接调用函数,但只有一次
- JS/jQuery -播放GIF只一次悬停
- 只洗牌一次悬停的单词
- jQuery子菜单不会消失,除非它被悬停一次
- 在悬停追加一次跨度
- Jquery加载页面获取另一个页面内容,鼠标悬停如何加载一次
- 鼠标悬停动作只运行一次(how to)
- jQuery为什么:悬停只工作一次
- 如何创建一次悬停 3 或 4 个元素的 javascript 函数
- 用于使用同一类的 JavaScript 一次悬停 3 个项目