我正在尝试动态地向DIVS
添加一些CONTAINER
(带动态添加功能的 )。当我点击这些DIVs
的某人时,MENU
会插入此DIV
。
在mouseleave
我需要从MENU
移除DIV
,delay
或setInterval
约5秒。它有效,但很混乱...所以我需要:
当mouseleave
离开此DIV
然后立即放入鼠标时
回到此DIV
,我需要停止delay
或setInterval
。我需要停下来
删除MENU
。
函数'handler'
存在一些问题。当我添加时,贝塞尔
一些DIV
到CONTAINER
,这是我第一次需要使用
doubleclik
,调用此函数。但我需要使用简单的点击。
以下是一个例子: http://jsfiddle.net/ynternet/84nVQ/5/
HTML
<div id="add" style="background:yellow; width:100px;"> add new </div>
<div id="container"> </div>
<div id="menu" style="color:red;"><b> I'm here </b></div>
的jQuery
function handler() {
$(this).on({
click: function(e) {
clearTimeout(time);
if ($(this).find("#menu").length) {
return;
}
$('#menu').prependTo($(this));
$("#menu").css({
position: "absolute",
left: "100px"
}).show();
}
});
$(this).on({
mouseleave: function(e) {
time = setTimeout(function() {
$('#menu').appendTo('body').clearTimeout(time);;
}, 5000);
}
});
$(this).on({
mouseover: function(e) {
clearTimeout(time);
}
});
}
$("#add").on({
click: function(e) {
var timestamp = Date.now();
var posx = Math.floor(Math.random()*400);
var posy = Math.floor(Math.random()*400);
$('#container').append(function() {
return $('<div class="add_to_this" id="' + timestamp + '" style="left:'+posx+'px; top:'+posy+'px; ">Click here</div>').click(handler);
});
}
});
CSS
#container {
width:500px;
height:500px;
background: palegoldenrod;
position: relative;
top:20px;
left: 100px;
padding: 0px;
}
.add_to_this {
background:yellowgreen;
position: absolute;
display:inline-block;
width:200px;
height:30px;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
user-select: none;
-o-user-select: none;
}
答案 0 :(得分:3)
function handler() {
$(this).on({...
什么是$(this)
?
您没有使用或传递任何选择器
使用$("#container").on
答案 1 :(得分:0)
这是解决方案:
JsFiddle - 工作示例:http://jsfiddle.net/ynternet/84nVQ/6/
的jQuery
function handler1() {
clearTimeout(time);
if ($(this).find("#menu").length) {
return;
}
$('#menu').prependTo($(this));
$("#menu").css({
position: "absolute",
left: "100px"
}).show();
}
function handler2() {
time = setTimeout(function() {
$('#menu').appendTo('body').clearTimeout(time);;
}, 5000);
}
function handler3() {
clearTimeout(time);
}
$("#add").on({
click: function(e) {
var timestamp = Date.now();
var posx = Math.floor(Math.random() * 400);
var posy = Math.floor(Math.random() * 400);
$('#container').append(function() {
return $('<div class="add_to_this" id="' + timestamp + '" style="left:' + posx + 'px; top:' + posy + 'px; ">Click here</div>').click(handler1).mouseleave(handler2).mouseenter(handler3);
});
}
});