javascript - 调用javascript函数来获取元素的偏移量

标签 javascript jquery jquery-ui dom

我有一个可拖动的 div,当您放下它时,它会为您提供其左侧值和顶部值以及它是否包含特定类。

示例:

$( "div" ).draggable({ 
    cursor:'move',
    stop: function() {

        if ($(this).hasClass('cool')) {
            var state = "Class cool exists"
        }
        var b = $(this);
        var bl = b.offset().left;
        var bt = b.offset().top;
        console.log("  Left:" + bl + "  Top:" + bt + "  Class:" + state);    


    }});

和 fiddle :http://jsfiddle.net/sq4XZ/

现在,这只需查找即可,但我想在单独的函数中调用所有这些方法,因为在我的实际脚本中,我必须通过按钮单击、悬停来多次调用该函数,基本上不仅仅是使用你删除了 div。

所以我所做的是:

function cool(){

        if ($(this).hasClass('cool')) {
            var state = "Class cool exists"
        }
        var b = $(this);
        var bl = b.offset().left;
        var bt = b.offset().top;
        console.log("  Left:" + bl + "  Top:" + bt + "  Class:" + state);    

}

$( "div" ).draggable({ 
    cursor:'move',
    stop: function() {

        cool();


    }});

这样每次我需要获取这些值时我都会调用cool()函数。

jsFiddle:http://jsfiddle.net/5bQ4d/

现在,如果您是 javascript 专家,您现在应该知道,由于 $(this),这不应该起作用。如果我用 $('div') 替换 $(this) 就可以了。但是当我调用cool()时,它不知道$(this)是哪个。

在我的实际页面中,我有很多这样的 div,所以当我调用 Cool() 时,我必须传递我正在谈论的 div id/名称/类。 那么,我如何将div名称/id/类传递给cool()函数,以便它知道$(this)表示我点击/悬停/放下的div?

谢谢

最佳答案

您可以使用 Function#call :

stop: function() {

    cool.call(this);


}});

这将强制 thiscool 内的 thisstop 内的 this 相同。 http://jsfiddle.net/5bQ4d/1/

关于javascript - 调用javascript函数来获取元素的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773632/

相关文章:

jquery - 当我们关闭叠加层时,YouTube 视频不会停止

javascript - 为什么当另一个客户端(新选项卡)连接时我的多人 javascript 游戏速度变慢?

javascript - 如何在 mongo 中将日期设置为日期变量

javascript - AngularJS 在自定义服务中使用 Angular 模块

javascript - 无法在 console.log 上获取音频的当前时间

javascript - JQUERY - 不悬停后将 SRC 更改回原始状态

jquery - 在 jQuery 中传递参数

php - 如何显示点击计数器然后使其回到零?

javascript - 如何握住悬停框? #html、#css、#js

jquery - daterangepicker选择一个月内的范围