javascript - jQuery 宽度函数在文本上返回 0

标签 javascript jquery

$(window).load(function() {
  $("img").each(function() {
    $(this).after("<div id='watermark'>Hello</div>");
    var width = $('#watermark').eq(0).width();
    //This outputs 0s
    console.log(width);
    $("#watermark").css("margin-left", "-" + width.toString() + "px");
  });


  $("img").click(function() {
    setTimeout(function() {
      $("img").each(function() {
        //this outputs 37
        console.log($('#watermark').eq(0).width());
        $(this).after("<div id='watermark'>Hello</div>");
      });
    }, 500);
  });

});

我试图获取在图像上插入的水印的宽度,以便我可以通过从左边距减去宽度的一半来使水印居中。然而,由于某种原因,即使我知道 div 存在,我还是从 .width() 函数中得到 0,因为我已经在上一行中插入了 div。另外,在代码的第二部分中,您将看到单击图像时,宽度会正确返回。为什么我在上半场得到了 0?

编辑:这是水印上的 CSS:

#watermark {
  opacity: 0.5;
  z-index: 99;
  position: absolute;
  color: white;
  top: 50%;
  left: 50%;
  text-align: center;
}

position:absolute会导致问题吗?

最佳答案

基于 css 更新,绝对位置元素没有宽度,除非您声明宽度或同时设置 leftright

在你的CSS规则中尝试包含width:100%right:0,然后运行你的代码,你将得到一些宽度值

关于javascript - jQuery 宽度函数在文本上返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37635269/

相关文章:

javascript - 需要按两次按钮,第一次关闭键盘,第二次发送。我该如何阻止这个?

javascript - 添加新行或空格到输出空间或新行

javascript - 获得第一个结果的 Ember-Data objectAt() 不起作用

javascript - 齐平 CSS 框对齐

javascript - 试图让动态生成的类循环

javascript - 未捕获的类型错误 : matchExpr[type]. exec 不是函数

javascript - navigatorIOS pop 上的 React Native Pass 属性

javascript - 从不同的文件创建 javascript 对象

javascript - 函数看不到 JSON 对象(javascript、jQuery)

javascript - 使用 Jquery 在 iPad 中双击