2013-04-29 64 views
4

,這是我的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上追加一個跨度。
其工作完美。
但我只想在最後一次後追加一次。
謝謝。

回答

1

使用one

$("li").one("hover", function() { 
    $(this).append($("<span> ***</span>")); 
}); 

http://api.jquery.com/one/

+1

但其工作時,點擊右側立.... – 2013-04-29 07:19:02

+0

@JackPhp - 這將在李的工作是隻有其追加一次。 – 2013-04-29 07:19:41

+1

@DarrenDavies你不需要傳遞一個事件作爲第一個參數嗎? – billyonecan 2013-04-29 07:23:31

2

我發現了jQuery api manual的例子,這不就是你想要什麼?

$("li").hover(
    function() { 
    $(this).append($("<span> ***</span>")); 
    }, 
    function() { 
    $(this).find("span:last").remove(); 
    } 
); 

或者你不想刪除跨度當鼠標離開,只是想追加一個跨度:

$("li").hover(function() { 
    if ($(this).find('span').length == 0) { 
    $(this).append($("<span> ***</span>")); 
    } 
}); 
+0

它的工作,但我想在最後李後追加。 – 2013-04-29 07:34:09

+0

@JackPhp你是什麼意思?你能發佈你的預期結果html嗎? – xdazz 2013-04-29 07:35:28

+0

編輯我的問題....請檢查.... – 2013-04-29 07:42:33

0

只需先檢查跨度已經存在。請記住,如果您想在鼠標離開後移除跨度,則「懸停」可能需要兩個功能。這相當於mouseover和mouseleave的組合。

$("li").hover(
    function() { 
    if ($(this).is(':empty')) { 
     $(this).append($("<span> ***</span>")); 
    } 
    }); 

參考文獻:hoveremptymouseovermouseleave

0

運用現代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 
} 

DocumentationCanIUse