我正在尝试'prependTo'“SELECT菜单”给DIV。菜单在DIV上的'mouseover'上'prependingTo'。在这个菜单中是带有一些选项的SELECT。 但是当我想选择其他选项时,SELECT菜单中的选项会隐藏。这是行不通的。为什么?
的 HTML: 的
<div id="add" style='width:200px; background:cyan;'> + + + + + + + + + </div>
<div id="menu">
<div style="display:inline-block;">
<button>1</button>
<button>2</button>
</div>
<div style="display:inline-block;">
<select id="fs">
<option value="Arial">Arial</option>
<option value="Verdana ">Verdana </option>
<option value="Impact ">Impact </option>
<option value="Comic Sans MS">Comic Sans MS</option>
</select>
</div>
</div>
<br>
<div id="cont">
<div id="container">
<div id="divA">1111<br><br> </div>
<br>
<div id="divB">2222<br><br> </div>
<br>
<div id="divC">33333<br><br> </div>
<br>
<div id="divD"><br> </div>
</div>
</div>
的 CSS: 的
#container{ padding: 100px; }
#menu{ font-size: 10px;
position: absolute;
background-color: none;
letter-spacing: 0px;
}
#divA{ background-color: yellow; }
#divB{ background-color: red; }
.divB{ background-color: red; }
#divC{ background-color: cyan; }
#divD{ background-color: brown; }
的 jQuery的: 的
$("#add").live("click", function() {
var timestamp = Date.now();
$("#container").prepend('<div class="divB" id="'+timestamp+'">'+timestamp+'<br><br></div>');
});
$("#container div").live({
mouseover: function() {
if( $(this).closest("#menu").length ){ return; }
$('#menu').prependTo($(this));
}
});
答案 0 :(得分:1)
您可以使用find
方法而不是closest
,closest
选择元素的最近父级,并且您想要找到元素的后代,if语句始终返回{{ 1}},另请注意,false
已弃用,您可以使用live
代替。
on
答案 1 :(得分:1)
试试这个
$("#container").bind({
mouseover: function() {
if( $(this).closest("#menu").length ){
return;
}
$('#menu').prependTo(this);
$("#container").unbind('mouseover');
}
});