悬停事件上的删除按钮

时间:2012-07-17 12:31:22

标签: javascript jquery

我遇到了hoverIntent的真正问题。

http://jsfiddle.net/5fwqL/

我想要的是什么:

  1. 将鼠标悬停在约 500ms 的文本上时,我希望显示deletetext。
  2. 如果我按下删除按钮,我希望删除文本
  3. 如果我在不按deletetext的情况下退出文本,我希望它隐藏()
  4. 的javascript

    $(document).on({
    mouseenter: function () {
        mouse_is_inside = true;
        $(this).next().slideDown();            
    },
    
    mouseleave: function () {
        mouse_is_inside = false;
        $(this).next().hide();   
    }
    }, '.title');
    
    $('.deleteLink').on('click', function() {
       $(this).prev().remove();         
    });
    

    HTML

    <div>
       <div class='title'>TitleText</div>
       <div class='delete'><a class='deleteLink' href="#">delete...</a></div>
    </div>
    

    **忘了提到它必须在IE8中工作,所以我必须使用旧式! **

2 个答案:

答案 0 :(得分:13)

看看这个小提琴 http://jsfiddle.net/joevallender/42Tw8/

您可以使用CSS来处理显示和隐藏删除链接。假设您像这样嵌套HTML

<div class='title'>
    TitleText 1
    <a class='delete' href="#">delete...</a>
</div>

然后你可以像这样使用CSS

.delete{
    color: red;
    display: none;
}
.title:hover .delete {
   display:block  
}

这实际上是删除/编辑链接等常见模式。 .title:hover .delete 表示 .delete 在悬停父 .title 时将拥有的CSS。您也可以在示例中向父级添加一个任意类,如果您希望保持相同的HTML排列,则使用该类。

然后使用下面的JS来处理点击

$(document).ready(function(){
    $('.delete').click(function(){
        $(this).parent().remove();
        return false;
    });
});

这有意义吗?它的起点略有不同

修改

对于我在评论中提到的淡入/淡出,您可以使用类似这样的内容

.delete{
    color: red;
    opacity:0;
    transition:opacity 0.5s linear;
    -moz-transition: opacity 0.5s linear;
    -webkit-transition: opacity 0.5s linear;
}
.title:hover .delete {
   opacity: 1;
   transition:opacity 2s linear;
   -moz-transition: opacity 2s linear;
   -webkit-transition: opacity 2s linear;
}​

<强> EDIT2

更改上述代码以使用淡入和淡出的不同转换时间

答案 1 :(得分:1)

$(document).ready(function() {        
    $(".title").hover(
        function() {
            $(this).data("mouse_hover", true);
            var self = $(this);
            setTimeout(function() {
                if (self.data("mouse_hover") === true) {
                    self.next(".deleteLink").show();
                }
            }, 500);
        },   
        function() {
            $(this).data("mouse_hover", false).next(".delete").hide();
        }        
    );
    $(".deleteLink").click(function(e) {
        e.preventDefault();
        $(this).text("deleted").prev(".title").slideUp(function() {
            $(this).hide();   
        });
    });
});    ​