首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery ui冲突第一次悬停不触发

问JQuery ui冲突第一次悬停不触发
EN

Stack Overflow用户
提问于 2013-09-25 22:34:27
回答 2查看 507关注 0票数 2

我有以下代码:

代码语言:javascript
复制
jQuery(function () {
    jQuery('.tooltip').tooltip({
        position: {
            my: "left top",
            at: "right top",
            collision: "flip fit"
        },
        content: function () {
            var element = jQuery(this);
            if (element.is("[rel]")) {
                var text = element.attr("rel");
                return '<div><img class="map" src="' + text + '"></div>';
            }
            if (element.is("[title]")) {
                return element.attr("title");
            }
            if (element.is("img")) {
                return element.attr("alt");
            }
        }
    });
});

这与预期一样工作,但只在初始悬停之后(悬停在"rel“元素上)。

在第一次鼠标悬停时,工具提示会出现,但会与窗口发生冲突(图像不会翻转或调整大小)。从第二次悬停开始,工具提示被翻转并根据需要调整大小。

我在第一次悬停之前和之后都检查过“工具提示”元素,但是我没有发现任何不同之处。我还检查了每个元素的CSS是否具有相同的结果。

任何想法都会有帮助,谢谢。

编辑:

现场直播:http://castle.staging.wpengine.com/themes/

如果你检查网站,确保图像与浏览器发生冲突(如果你有一个巨大的屏幕,你可能不得不调整浏览器的大小)

一些图片指出了这个问题:

另一张图片(底部适配不工作:)

​

EN

回答 2

Stack Overflow用户

发布于 2013-10-01 12:32:03

我怀疑工具提示的位置是在实际加载图像之前计算的,因此在知道实际图像的尺寸之前。

由于预先知道图像的大小(图像的文件名建议这样做),所以可以尝试将img大小设置为css属性,例如:

代码语言:javascript
复制
if ( element.is( "[rel]" ) ) {
  var text = element.attr( "rel" );

  var width = element.attr('data-imagewidth');   // this or extract width from img filename
  var height = element.attr('data-imageheight'); // this or extract width from img filename

  return '<div><img class="map" width="'+width'+" height="'+height+'" src="' + text + '"></div>';
}

工具提示文档还提到了一个回调机制。您可以尝试加载图像并仅在加载后显示工具提示:

代码语言:javascript
复制
content: function(callback) {
    ...
    if ( element.is( "[rel]" ) ) {
        var image = new Image();
        image.onload = function(){
            image.onload = null;
            callback(image);
        }
        image.src = element.attr('rel');
        return;
    }
    ...
}
票数 0
EN

Stack Overflow用户

发布于 2013-10-07 17:59:18

您的问题与许多js脚本有关,这些脚本为您的站点增加了一个权重,这也是为什么ready最近触发的原因,但是在包含了tooltip脚本之后,您使用了document.ready中的can out委托:

代码语言:javascript
复制
jQuery(document).tooltip({
    items: '.tooltip',
    position: function() {
        ...
    },
    content: function () {  
        ...
    }
})

顺便说一句,为了提高用户的效率(预览图像可能加载缓慢),您可以调整工具提示容器的设计:

  • 设置最小宽度/最小高度
  • 将加载图像设置为背景

使用image.onload事件不是个好主意,因为它可能不会触发缓存的映像,至少在IE中是这样,异步工具提示对用户来说是相当混乱的,并且有它自己的缺陷(看看这个问题,在动态加载内容期间取消jquery工具提示)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19016320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档