大家早上好,新年快乐!
我遇到了一些障碍,需要找出解决方案或替代方案,我不知道如何解决这个问题。我实际上希望这很简单;意思是你们中的一个人已经处理过这个问题了。
问题在于我正在进行包含信息的翻转。他们是被移动到绝对位置的div。现在我用jquery 1.6 - 1.9.1尝试过这个。当然,这必须适用于多种浏览器。
需要发生的事情是翻转显示div,当你推出该div时,让它隐藏。
...
// .columnItem is class level and works
$(".columnItem").mouseleave(function() {
$(this).css("display", "none");
});
...
$(".column").mouseenter(function() {
var currentItem = $(this)[0]; // this is where the problem is
// hide all .columnItems
$(".columnItem").css("display", "none");
// i get this error: Object #<HTMLDivElement> has no method 'offset' (viewing in chrome console)
var offsetTop = currentItem.offset().top;
var columnInfoPanel = $("#column" + currentItem.innerText);
});
因此,立即想到一些人不会使用$(this)[0]
。相反,我应该使用$(this)
,你是对的!其他问题发生的地方是删除数组索引,currentItem.innerText
现在是undefined
。
我唯一能想到的是我必须将它们混合在一起,但似乎应该有一种方法来使用选择器并获得两种选择。
你们都做了什么?
谢谢, 凯利
答案 0 :(得分:0)
如你所说,在开头略过[0]。 但是然后将最后一行更改为:
var columnInfoPanel = $("#column" + currentItem[0].innerText);
取消引用jQuery选择器为您提供DOM对象。 如果你想坚持使用纯jQuery,.text()/ .html()方法将为你提供相同的功能。
答案 1 :(得分:0)
替换:
var currentItem = $(this)[0];
使用:
var currentItem = $(this).eq(0);
这将创建一个仅包含第一个元素的新jQuery对象,因此offset
将起作用。
然后您可以使用currentItem[0].innerText
或currentItem.text()
,无论您喜欢哪种方式。