不能让.offset()方法在迭代一组列表项时工作
Can't get .offset() method to work when iterating over a set of list items
本质上,我试图在点击时应用一个类似工具提示的弹出窗口到一组列表项。一切似乎都很好,除了弹出框的定位。我试图使用.offset()
来抓取每个列表项的坐标,这样我就可以定位弹出div相对于列表项。我在下面包含了相关的html元素、css和我的脚本。任何帮助将非常感激!
<ul>
<li class="checked" title="This is a test popup message">Yada yada yada</li>
<li class="checked" title="This is another test popup message">Yada yada yada</li>
<li class="checked" title="This is yet another test popup message">Yada yada yada</li>
</ul>
CSS: .popup {
position: absolute;
width: 300px;
padding: 20px;
background: rgba(0,0,0, .5);
z-index: 10000;
display: none;
}
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});
}
});
});
try include
//Grabs Position data of trigger element
var pos = $(this).offset();
var posTop = pos.top;
var posLeft = pos.left;
inside your click
function like:
$(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);
});
相关文章:
- fluxxor向一个flux实例添加一组以上的操作
- 我们怎样才能将内含子J用于一组特定的元素
- 使用linq.js按当前日期订购一组momentjs日期
- 正则表达式,从一组关键字中获取奇数
- 创建一组元素JointJS
- 如何在javascript中获取一组复选框值
- 一组(共组..)
- 使用JS将页面中的每个字母设置为随机颜色.为什么在页面的每个打开标记之前总是有一组额外的span标记
- 在一组复选框中,一次只允许选择一个
- 为什么在fabricjs中可选择的不适用于一组圆
- 如何创建一组从属选择列表,其中连续列表依赖于前面列表选项的选择
- 如何在不影响其他项目的情况下操作一组列表组项目
- Algorithm/Formula创建一条线/条,该线/条遵循坐标列表中的一组规范
- 使用Javascript维护一组选择下拉列表
- 不能让.offset()方法在迭代一组列表项时工作
- Jquery:如何使一个列表在一组列表中不可排序
- 使用JavaScript/jQuery对一组列表元素进行排序和分离
- 如果一组下拉列表中的任何下拉列表值与其他下拉列表选择的值相等,则应删除整个其他下拉列表
- 在运行时使用一组值生成多个下拉列表
- 使用可选的包含和排除单词列表来定位一组单词