有人可以告诉我为什么以下示例在Firefox中工作但在IE 8中不工作? 只有content_1在IE 8中才能正常工作。
Thx vijey。
<script type="text/javascript">
$(function(){
$("#sortable").sortable({handle: '#dragable'});
});
$(function(){
var v;
$('div[id^="content_"]').hover(
function () {
v = $(this).attr('id');
$('#'+v+' #menu').show();
$('#'+v+' #dragable').show();
},
function () {
$('#'+v+' #menu').hide();
$('#'+v+' #dragable').hide();
}
);
});
</script>
<body>
<div id='sortable'>
<div id='content_1'>
<div id='menu' style='display:none;'>
<div>edit</div>
<div>add</div>
<div>delete</div>
</div>
<div id='content'>Content_1</div>
<div id='dragable' style='display:none;'>[drag]</div>
</div>
<div id='content_2'>
<div id='menu' style='display: none;'>
<div>edit</div>
<div>add</div>
<div>delete</div>
</div>
<div id='content'>Content_2</div>
<div id='dragable' style='display:none;'>[drag]</div>
</div>
<div id='content_3'>
<div id='menu' style='display: none;'>
<div>edit</div>
<div>add</div>
<div>delete</div>
</div>
<div id='content'>Content_3</div>
<div id='dragable' style='display: none;'>[drag]</div>
</div>
</div>
</body>
答案 0 :(得分:2)
页面中的ID必须是唯一的(html spec [1]);您有2 #menu
,#content
等。将其更改为例如<div class="menu">
以及.menu
的选择器 - 应该有效。
顺便提一下,您可以使用find
[2]简化悬停回调:
function () {
$(this).find('.menu, .dragable').show();
}
1:http://www.w3.org/TR/html401/struct/global.html#h-7.5.2
2:http://api.jquery.com/find/
答案 1 :(得分:0)
您不能拥有多个具有相同ID的元素,它是无效的HTML,ID必须是唯一的。您的菜单元素必须是类而不是ID,如下所示:
<div id='content_1'>
<div class='menu' style='display: none;'>
<div>edit</div>
<div>add</div>
<div>delete</div>
</div>
<div class='content'>Content_2</div>
<div class='dragable' style='display:none;'>[drag]</div>
</div>
和jQuery这样:
$(function(){
$('div[id^="content_"]').hover(
function () {
$(this).find('.menu, .dragable').show();
},
function () {
$(this).find('.menu, .dragable').hide();
}
);
});