Javascript jquery高亮显示不';I don’我没法覆盖整个部门

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",

我有这个功能来突出显示div的全部内容:

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对象了。无需在其上使用
    $()
  • 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();
        });
    });