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);
});