【问题标题】:How to get a tables TD-offset()'s with jQuery 1.5.2 (Drupal7)?如何使用 jQuery 1.5.2 (Drupal7) 获取表 TD-offset()?
【发布时间】:2013-01-25 16:44:29
【问题描述】:

我需要在 Drupal7 生成的 HTML 站点(安装了 jQuery_update)中找到表格 TD 元素的正确 .offset() 位置。我用

        $('#contenttable td').each(function(){ 
            console.log($(this).offsetParent());
            console.log($(this).offset().left);
        });

在我的

jQuery(function($) {
    //$(document).ready(function(){

我的 script.js 获取 offset().left-position 但控制台总是跟踪我所有 TD 的“0”。

当我使用 Safari 开发者控制台的输出时

jQuery('#contenttable td:nth-child(2)').offset().left

是“1728”,所以它似乎完全可以工作。但为什么它在我的 DOCUMENT.READY 中不起作用?

顺便说一句,.offsetParent() 是 BODY... 并且将某些父 DIV 的位置更改为绝对或相对也没有任何变化。 太好了!

编辑:似乎根本不适用于任何元素。

【问题讨论】:

  • 你知道jQuery(function($) {$(document).ready(function(){ 做同样的事情,对吧?所以像这样嵌套它们是不必要的。只是想指出来
  • 为什么你一直混合使用jQuery()$()?坚持一个。使用$ 很好,除非您正在使用另一个使用该标识符的库......比如原型。你在使用其他类似的库吗?
  • 是的,我愿意。在 Drupal 中,你需要像这样嵌套 jQuery。
  • 什么意思?无论如何,尝试使用console.log(jQuery(this).offsetParent()); - 注意我是如何将其更改为jQuery 而不是$
  • @Ian:但这似乎不是问题所在。有什么想法吗?

标签: javascript jquery html drupal-7 offset


【解决方案1】:

不幸的是,jQuery.offset 不适用于隐藏元素,因为浏览器根本不会费心渲染它们。因此,如果可能,您需要使元素可见以获取其offset。根据jquery: get the offset of hidden element,您应该可以在表格/内容上调用.show(),获得所需的offset,然后在其上调用.hide()。这种显示/隐藏对用户来说不应该是明显的,因为它不会重新绘制页面,因为它在同一个执行事件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多