Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 使用jQuery UI的内联图像弹出按钮_Jquery Ui_Position_Flyout - Fatal编程技术网

Jquery ui 使用jQuery UI的内联图像弹出按钮

Jquery ui 使用jQuery UI的内联图像弹出按钮,jquery-ui,position,flyout,Jquery Ui,Position,Flyout,我正在试验一个想法。我有一块HTML文本,包括内联图像。一些图片将有(我认为是所谓的)弹出按钮。也就是说,将鼠标悬停在图像上,在其左侧显示一个控制面板。在未来的控制面板将切换显示模式,改变图像大小等,现在,我只希望它出现。当鼠标离开图像或控制面板时消失 jQueryUI有一个方便的“”函数,它几乎完全符合我的要求 当我在Safari 5.0.1上使用它时,它第一次起作用,但随后的鼠标移动会导致控制面板不断移动,看起来是相同的增量。看起来position()每次都会将偏移应用于面板,而我希望它变为

我正在试验一个想法。我有一块HTML文本,包括内联图像。一些图片将有(我认为是所谓的)弹出按钮。也就是说,将鼠标悬停在图像上,在其左侧显示一个控制面板。在未来的控制面板将切换显示模式,改变图像大小等,现在,我只希望它出现。当鼠标离开图像或控制面板时消失

jQueryUI有一个方便的“”函数,它几乎完全符合我的要求

当我在Safari 5.0.1上使用它时,它第一次起作用,但随后的鼠标移动会导致控制面板不断移动,看起来是相同的增量。看起来position()每次都会将偏移应用于面板,而我希望它变为固定/静态位置

当我在Firefox 3.6.7上使用它时,图像和控制面板之间有一个1像素的间隙。我希望img和div完全对齐,我认为这是位置点

我需要做些什么才能让它每次都走到正确的位置?这种技术被称为“飞出”、“飞越”还是其他术语

这是我的密码

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html><head>
<style>
.flyover {
  border: 1px solid green;
  position: absolute;
  display: none;
}
img {
  border: 1px solid blue;
}
</style>
</head>

<body>
<div class="flyover">*</div>

<P>Here is an image
<img width=30 height=30 src="http://www.dalkescientific.com/writings/diary/alcohol_terse.png">
Mouse over to get the flyover.
</P>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js"></script>

<script>

var is_shown = 0;

var check_for_close = function () {
  if (!is_shown) {
    $(".flyover").hide();
  }
};

// Don't check right away because the mouse might have
// moved from the image to the flyover or vice versa
var check_exit = function () {
  is_shown = 0;
  setTimeout(check_for_close, 0.0);
};

$(document).ready(function () {
 $("img").mouseenter(function() {
   $(".flyover").position({my: "right top",
                            at: "left top",
                            of: $("img")});
    $(".flyover").show();
   is_shown = 1;
  }).mouseleave(check_exit);

  $(".flyover").mouseenter(function() {
    is_shown = 1;
  }).mouseleave(check_exit);
});
</script>
</body> </html>

·天桥{
边框:1px纯绿色;
位置:绝对位置;
显示:无;
}
img{
边框:1px纯蓝色;
}
*

这是一张图片 鼠标移到天桥上。

显示的var=0; var check_for_close=函数(){ 如果(!已显示){ $(“.flyover”).hide(); } }; //不要马上检查,因为鼠标可能会 //从图像移动到立交桥,反之亦然 var check_exit=函数(){ 所示为=0; setTimeout(检查_是否关闭,0.0); }; $(文档).ready(函数(){ $(“img”).mouseenter(函数(){ $(“.flyover”)。位置({my:“右上方”, 在“左上角”, 其中:$(“img”)}; $(“.flyover”).show(); 所示为=1; }).mouseleave(检查出口); $(“.flyover”).mouseenter(函数(){ 所示为=1; }).mouseleave(检查出口); });
我发现了一个错误,表明这是“jQuery核心中的一个错误,已经修复,但尚未发布”。我有一个解决Safari问题的方法,就是在每次调用position之前使用nmyvision的注释并重置位置,如中所示

$(...).css({left:0,top:0}).position({ ... });
在Firefox中,我仍然会减少一个像素,但我会以其他方式解决这个问题