Chrome/Opera jquery css 显示不工作
Chrome/Opera jquery css display not working
我想在用户单击某些 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 之外,在所有浏览器中一切正常,消息不会出现。如果我不在鼠标离开时将显示 属性 更改为 "none",则会在我单击的位置出现一个白色的小方块,但里面没有文本。
我认为它与 .css("display", "block") 有关,但我不太确定(如果标题与我的问题不符,抱歉)。也许我遗漏了一些可移植性问题?
正如 在评论中发现的那样,您正在使用 new
保留字来命名变量。这会自动引发语法错误。
我认为您没有在任何浏览器或 JS 引擎中实现此功能。尝试将其更改为 _new
或类似的东西..
更新
更改了那个 var,并删除了这一行(我认为不相关)
saved_state = classi[classi.length - 2];
效果很好。这是一个 jsfiddle:https://jsfiddle.net/jormaechea/4b7r66vr/
我认为问题是这样的:当你点击 span 元素时,消息出现在鼠标指针下方,立即触发隐藏消息的 mouseleave 事件。尝试注释掉 mouseleave 事件回调以查看是否是问题所在。也可以在这里玩 top/left 值:
$(msg).css('top', y-80).css('left', x);
向 x/y 添加或删除一些值,以确保您的 div with 消息不会出现在光标下。
我想在用户单击某些 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 之外,在所有浏览器中一切正常,消息不会出现。如果我不在鼠标离开时将显示 属性 更改为 "none",则会在我单击的位置出现一个白色的小方块,但里面没有文本。 我认为它与 .css("display", "block") 有关,但我不太确定(如果标题与我的问题不符,抱歉)。也许我遗漏了一些可移植性问题?
正如 new
保留字来命名变量。这会自动引发语法错误。
我认为您没有在任何浏览器或 JS 引擎中实现此功能。尝试将其更改为 _new
或类似的东西..
更新
更改了那个 var,并删除了这一行(我认为不相关)
saved_state = classi[classi.length - 2];
效果很好。这是一个 jsfiddle:https://jsfiddle.net/jormaechea/4b7r66vr/
我认为问题是这样的:当你点击 span 元素时,消息出现在鼠标指针下方,立即触发隐藏消息的 mouseleave 事件。尝试注释掉 mouseleave 事件回调以查看是否是问题所在。也可以在这里玩 top/left 值:
$(msg).css('top', y-80).css('left', x);
向 x/y 添加或删除一些值,以确保您的 div with 消息不会出现在光标下。