我可以这样做:
$("#icon").live("hover",
function()
{
var position = $(this).offset();
$('#popup').css({top: position.top - 10, left: position.left + 20}).toggle();
},
function()
{
$('#popup').toggle();
}
);
但是这个:
function show_popup(element)
{
var position = element.offset();
$('#popup').css({top: position.top - 10, left: position.left + 20}).toggle();
}
$("#icon").live("hover",
show_popup($(this)),
function()
{
$('#popup').toggle();
}
);
页面加载时错误position is null
。
为什么它在页面加载时运行show_popup()?这段代码出了什么问题?
答案 0 :(得分:0)
此:
show_popup($(this))
是一个函数调用,因此当live
被设置为执行时,它将被执行,你只需要一个函数。执行show_popup($(this))
后,this
可能会window
而window
没有偏移量,这意味着position
在show_popup
内null
将是show_popup
,这是您的错误消息。另请注意,此方法尝试将undefined
的返回值(将为$("#icon").live("hover",
function() { show_popup($(this)) },
function()
{
$('#popup').toggle();
}
);
)绑定为jQuery回调,这显然不是您的意图。
你想要这样的东西:
function show_popup()
{
var position = $(this).offset();
$('#popup').css({top: position.top - 10, left: position.left + 20}).toggle();
}
$("#icon").live("hover",
show_popup,
function()
{
$('#popup').toggle();
}
);
或许这个:
show_popup
在这种情况下,你总是必须在调用show_popup.call(some_dom_element)
时提供适当的上下文,这样如果你想在任何地方调用show_popup
,你就会做很多事情,比如{{1}}是一个jQuery回调。
答案 1 :(得分:0)
使用“元素”。在这种情况下无效。使职位无法使用。 如果你做了像
这样的事情var position = $('#'+element).offset();
这可能有助于解决问题。注意我在调用之前添加了一个“id”(#)选择器而不是“class”(。)选择器,当然你可以相应地编辑它