Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t get.offset()方法在迭代一组列表项时起作用_Javascript_Jquery_Offset - Fatal编程技术网

Javascript Can';t get.offset()方法在迭代一组列表项时起作用

Javascript Can';t get.offset()方法在迭代一组列表项时起作用,javascript,jquery,offset,Javascript,Jquery,Offset,本质上,我正在尝试将工具提示(如单击时弹出)应用于一组列表项。除了弹出窗口的位置外,一切似乎都正常工作。我正在尝试使用.offset()获取每个列表项的坐标,以便可以相对于列表项定位弹出div。我在下面包含了相关的html元素、css和我的脚本。任何帮助都将不胜感激 HTML: JavaScript: $(document).ready(function() { activatePopup = function() { var popupMarkup = '<div class=

本质上,我正在尝试将工具提示(如单击时弹出)应用于一组列表项。除了弹出窗口的位置外,一切似乎都正常工作。我正在尝试使用
.offset()
获取每个列表项的坐标,以便可以相对于列表项定位弹出div。我在下面包含了相关的html元素、css和我的脚本。任何帮助都将不胜感激

HTML:

JavaScript:

$(document).ready(function() {

activatePopup = function() {
    var popupMarkup = '<div class="popup">' + '</div>';
    return popupMarkup;
}

$('body').prepend(activatePopup());

$('.checked').each(function() {
    // Sets popup text based on title attribute
    var popup = $('.popup');
    var popupText = $(this).attr('title');
    $(this).attr('title', '');

    //Grabs Position data of trigger element
    var pos = $(this).offset();
    var posTop = pos.top;
    var posLeft = pos.left;


    $(this).click(function() {
        popup.html(popupText);
        if (popup.is(":hidden")) {
            popup.fadeIn('fast');
        } else {
            popup.fadeOut('fast');
        }

        $(this).toggleClass('unchecked');
        $(this).toggleClass('checked');

        setPos(posTop, posLeft);
    });

    setPos = function(top, left) {
        var yPos = (top - 80) + 'px';
        var xPos = (left + 40) + 'px';

        popup.css({'top' : yPos, 'left' : xPos});
    }
});
});
$(文档).ready(函数(){
activatePopup=函数(){
var popupMarkup=''+'';
返回弹出标记;
}
$('body').prepend(activatePopup());
$('.checked')。每个(函数(){
//根据标题属性设置弹出文本
var popup=$('.popup');
var popupText=$(this.attr('title');
$(this.attr('title','');
//获取触发元件的位置数据
var pos=$(this.offset();
var posTop=位置顶部;
var posLeft=pos.left;
$(此)。单击(函数(){
html(popupText);
if(popup.is(“:hidden”)){
popup.fadeIn('fast');
}否则{
popup.fadeOut('fast');
}
$(this.toggleClass('unchecked');
$(this.toggleClass('checked');
setPos(posTop,posLeft);
});
setPos=功能(顶部,左侧){
var yPos=(前80名)+“px”;
var xPos=(左+40)+‘px’;
css({'top':yPos,'left':xPos});
}
});
});
尝试包括

//Grabs Position data of trigger element
var pos = $(this).offset();
var posTop = pos.top;
var posLeft = pos.left;
在您的内部
单击
功能,如:

   $(this).click(function() {
        var pos = $(this).offset();
        var posTop = pos.top;
        var posLeft = pos.left;

        popup.html(popupText);
        if (popup.is(":hidden")) {
            popup.fadeIn('fast');
        } else {
            popup.fadeOut('fast');
        }

        $(this).toggleClass('unchecked');
        $(this).toggleClass('checked');

        setPos(posTop, posLeft);
    });

这应该可以做到:)

您得到的偏移值是多少?在Chrome中它似乎对我很好。如果你正在做一个工具提示,最好使用鼠标位置而不是元素的位置。啊!新手犯的错误。非常感谢你!
//Grabs Position data of trigger element
var pos = $(this).offset();
var posTop = pos.top;
var posLeft = pos.left;
   $(this).click(function() {
        var pos = $(this).offset();
        var posTop = pos.top;
        var posLeft = pos.left;

        popup.html(popupText);
        if (popup.is(":hidden")) {
            popup.fadeIn('fast');
        } else {
            popup.fadeOut('fast');
        }

        $(this).toggleClass('unchecked');
        $(this).toggleClass('checked');

        setPos(posTop, posLeft);
    });