【问题标题】:Chrome/Opera jquery css display not workingChrome/Opera jquery css 显示不工作
【发布时间】:2015-12-01 18:08:00
【问题描述】:

我想在用户点击某些 html 元素时显示一条浮动文本消息;代码是

function avviso(el, e){   
    var y = e.pageY;
    var x = e.pageX;
    saved_state = classi[classi.length - 2]; 
    msg = $("#messagge");
    $(msg).css('display', 'block');
    $(msg).css('top', y-80).css('left', x);
    $( "<p>\""+el.textContent+"\"</p>").appendTo(msg);
}

像这样附加到元素上:

$(span).on("click tap", function(event){
      var element = this;
      avviso(element, event);
 }).mouseleave(function(){
      $("#messagge").css('display', 'none');
      $("#messagge").children().remove();
 });

其中 span 是要单击的元素,“#messagge”是应该出现的文本消息的 id,使用以下 css 属性进行初始化:

    var n= $("<div id='messagge'></div>");
    var styles = {
            "display" : "none",
            "position":"absolute",
            "background-color":"#fff",
            "border":"1px solid #000",
            "padding":"5px",
            "max-width":"200px",
            "color":"black",
            "font-size":"10px",
        }
        $(n).css( styles );
        $(n).appendTo($("body"))

现在,在所有浏览器中一切正常,除了 chrome 和 Opera,没有出现消息。如果我没有在鼠标离开时将显示属性更改为“无”,我点击的地方会出现一个白色的小方块,但里面没有文字。 我认为它与.css(“display”,“block”)有关,但我不太确定(对不起,如果标题与我的问题不符)。也许我错过了一些可移植性问题?

【问题讨论】:

  • 欢迎来到 StackOverflow。如果您在问题中发布 jsfiddle,这将真正帮助我们理解、尝试和解决您的问题。如果您从未这样做过,这里是链接:jsfiddle.net
  • 你是如何让 var new = ... 在 Firefox 中工作的?这是语法错误。
  • 我在写问题时更改了它,实际代码有效 - 现在编辑它,抱歉
  • 这一行是关于什么的? saved_state = classi[classi.length - 2];

标签: jquery css google-chrome opera


【解决方案1】:

正如 Serge Seredenko 在 cmets 中发现的那样,您使用 new 保留字来命名 var。这会自动引发语法错误。

我不认为你在任何浏览器或 JS 引擎中都能做到这一点。尝试将其更改为 _new 或类似的东西..


更新

随着那个 var 的改变,并删除了这个(我认为不相关的)行

saved_state = classi[classi.length - 2];

完美运行。这是一个 jsfiddle:https://jsfiddle.net/jormaechea/4b7r66vr/

【讨论】:

  • 是复制错误,实际代码中有别的名字,现在编辑一下
  • @Maldus 刚刚编辑了我的答案。看看这个。如果问题仍然存在,您没有发布正确的代码块..(我在 Chrome 中测试过,顺便说一句)
  • 现在可以了,现在看来问题是 ischenkodv 指出的问题
【解决方案2】:

我认为问题是这样的:当您单击 span 元素时,消息出现在鼠标指针下方,立即触发隐藏消息的 mouseleave 事件。尝试注释掉 mouseleave 事件回调,看看是否是问题所在。也可以在这里使用顶部/左侧值:

$(msg).css('top', y-80).css('left', x);

向 x/y 添加或删除一些值,以确保带有消息的 div 不会出现在光标下。

【讨论】:

  • 就是这样,在 x 值上加了 20,现在可以正常工作了。我怀疑我是否曾经自己提出过解决方案,非常感谢
  • 如果我的回答解决了您的问题,请接受。
  • 对不起,我在 StackOverFlow 上的第一个问题,忘了做
猜你喜欢
  • 2012-08-20
  • 2011-01-25
  • 1970-01-01
  • 2018-04-12
  • 2013-08-17
  • 2013-03-09
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多