Javascript jquery高亮显示不';I don’我没法覆盖整个部门
我有这个功能来突出显示div的全部内容:Javascript jquery高亮显示不';I don’我没法覆盖整个部门,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有这个功能来突出显示div的全部内容: jQuery.fn.highlight = function () { $(this).each(function () { var el = $(this); $("<div/>") .width(el.width()) .height(el.height()) .css({ "position": "absolute",
jQuery.fn.highlight = function () {
$(this).each(function () {
var el = $(this);
$("<div/>")
.width(el.width())
.height(el.height())
.css({
"position": "absolute",
"left": el.offset().left,
"top": el.offset().top,
"background-color": "#ffff99",
"opacity": ".7",
"z-index": "9999999"
}).appendTo('body').fadeOut(1000).queue(function () { $(this).remove(); });
});
}
我想问的是:我如何让亮点覆盖整个事物?我原以为把它放在最后就行了,但似乎不行。有几件事:
div
的大小。使用当前方法,您需要在加载文本后设置(或更新)(通过使用load
的完成回调)这个
在jQuery插件中已经是一个jQuery对象了。无需在其上使用$()
this
,除非它们有很好的理由不返回而不是考虑在内容(不是<代码>正文>代码)中插入<代码> div <代码>,使用<代码>位置:绝对<代码> >代码>左边<代码>,<代码>顶部< /代码>,<代码>右< /代码>,和<代码>底部<代码>设置为<代码> 0 < /代码>。确保其中的元素是
位置:相对的(或其他位置)。在实际加载文本的目标区域中有第二个div
这里有一个例子。我不知道你为什么在最后两行中使用.prefix
而不是#preview
,所以我更改了它:
jQuery.fn.highlight=函数(){
//已添加退货,已删除$()
返回此。每个(函数(){
$("")
.css({
位置:“绝对”,
左:0,,
排名:0,
右:0,,
底部:0,
“背景色”:“ffff99”,
不透明度:.7,
“z指数”:999999
}).prependTo(this.fadeOut(1000).queue(函数(){$(this.remove();});
});
};
//只是为了模拟负载`
jQuery.fn.fakeLoad=函数(url、数据、回调){
返回此值。每个(函数(){
var$this=$(this);
setTimeout(函数(){
$this.html("知识本身是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德如果你不轻率,就必须为自己的行为负责。”;
回调。调用(此);
},Math.random()*1000);
});
};
$(“#预览_文本_按钮”)。单击(函数()
{
var text=$('.texarea').val();
//要包含内容的div
var div=$(“”);
//清除以前的#预览内容,只需将我们的内容分区
$('预览').html(div);
//装货
div.fakeLoad('page address',{'text':text},function(){
//我们有文本,展示它,做突出显示的事情
$(“#预览”).show().highlight();
});
});
#预览{
位置:相对位置;
}
单击按钮时,在随机延迟后,会加载并突出显示一些文本(短暂)
预览前的一些文本
预览后的一些文本
有几件事:
正如您所确定的,您正在添加文本之前设置div
的大小。使用当前方法,您需要在加载文本后设置(或更新)(通过使用load
的完成回调)
你可能会想要和
如果用户调整浏览器窗口的大小,突出显示可能会错位
这个
在jQuery插件中已经是一个jQuery对象了。不需要在它上面使用$()
jQuery插件应该总是返回this
,除非它们有很好的理由不返回
请考虑在内容(不是<代码>正文>代码)中插入<代码> div <代码>,使用<代码> >“<代码>左<代码>,<代码>顶部,<代码>右< /代码>,和<代码>底部<代码>设置为<代码> 0代码>代码。确保元素In是“代码>位置:相关< /代码>(或以其他方式定位)。在实际加载文本的目标区域中有第二个div
下面是一个示例。我不确定为什么在最后两行中使用.prefix
而不是#preview
,所以我更改了它:
jQuery.fn.highlight=函数(){
//已添加退货,已删除$()
返回此。每个(函数(){
$("")
.css({
位置:“绝对”,
左:0,,
排名:0,
右:0,,
底部:0,
“背景色”:“ffff99”,
不透明度:.7,
“z指数”:999999
}).prependTo(this.fadeOut(1000).queue(函数(){$(this.remove();});
});
};
//只是为了模拟负载`
jQuery.fn.fakeLoad=函数(url、数据、回调){
返回此值。每个(函数(){
var$this=$(this);
setTimeout(函数(){
$this.html(“知识本身是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德,是一种美德如果你不轻率,就必须为自己的行为负责。”;
回调。调用(此);
},Math.random()*1000);
});
};
$(“#预览_文本_按钮”)。单击(函数()
{
var text=$('.texarea').val();
//要包含内容的div
var div=$(“”);
//清除以前的#预览内容,只需将我们的内容分区
$('预览').html(div);
//装货
div.fakeLoad('page address',{'text':text},function(){
//我们有文本,展示它,做突出显示的事情
$('#预览
$('#preview_text_button').click(function()
{
var text = $('.texarea').val();
$('#preview').load('page address', {'text':text});
$('.preview').show();
$('.preview').highlight();
});
$('#preview_text_button').click(function()
{
var text = $('.texarea').val();
$('#preview').load('page address', {'text':text}, function() {
$('.preview').show();
$('.preview').highlight();
});
});