我遇到了hoverIntent的真正问题。
我想要的是什么:
的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中工作,所以我必须使用旧式! **
答案 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();
});
});
});