获取DIV标签的坐标

时间:2013-11-15 04:31:03

标签: jquery

在此处输入代码如果您查看此代码,它会获得div标签的左侧坐标 - http://jsfiddle.net/JuPA4/3/,这正是我所需要的。

$(function () {
    var position = $("#red11").offset();
    $("#amount").val(position.left);
});

(我已经在炒作论坛上询问过,现在已经3天没有答案了)

  

控制台错误是(Uncaught TypeError:无法读取属性'left'的   undefined)不确定为什么我可以与元素互动!

黑点元素位于名为#black的div标记内,出于某种原因,上面发布的代码不适用于hype文件!我知道我可以与它进行交互,我在页面上添加了一个演示,点击隐藏/显示以与点进行交互。

我不是最好用Javascript,所以如果有人有任何想法,那么帮助将不胜感激。

最终结果是左侧和顶部的坐标都更新为文本输入,因此我可以将它们放入数据库中。

1 个答案:

答案 0 :(得分:1)

如果在与任何元素不匹配的选择器上调用.offset(),它将返回undefined,并且在将“black”元素添加到DOM之前,您的选择器似乎已执行。在将元素添加到DOM之后,您需要延迟代码。

您可以查看this question以获取解决方案。它显示了一种观察DOM的方法。

或者您可以尝试以下内容,只需尝试,等待并再次尝试,直到该元素出现:

<script>
function executeWhenExists(selector, wait, callback) {
    if ($(selector).length > 0) {
        callback();
    } else {
        setTimeout(function() { executeWhenExists(selector, wait, callback) }, wait);
    }
}

$(function () {
    executeWhenExists("#black", 1000, function() {
        var position = $("#black").offset();
        $("#amount").val(position.left);
    });
});
</script>

甚至可能将代码延迟到窗口的加载事件(而不是让它在文档的ready事件中运行)。这看起来像这样:

<script>
$(window).on('load', function () {
    var position = $("#black").offset();
    $("#amount").val(position.left);
});
</script>