好的,所以我在 users.js.coffee 中有一些咖啡脚本,它在滚动用户名时运行 Twitter 引导弹出窗口(这目前有效)现在我希望能够做的是,如果用户没有将鼠标悬停在弹出框上,则使用超时来隐藏弹出窗口。
这是我的代码(当前抛出未捕获的引用错误:timeoutObj 未在弹出窗口的滚动时定义)我的问题显然与 timeoutObj 变量有关,尽管它应该在 mouseleave 方法中设置?
$ ->
timeoutObj = undefined
$(".comment-user-name").popover({
trigger: "manual"
placement: 'top'
template: '<div class="popover" onmouseover="clearTimeout(timeoutObj);$(this).mouseleave(function() {$(this).hide(); });"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
})
$(".comment-user-name").mouseenter((event, ui) ->
$(".comment-user-name").popover('show')
)
$(".comment-user-name").mouseleave((event, ui) ->
timeoutObj = setTimeout (-> $(".comment-user-name").popover('hide') ), 3000
)
这是正确的代码:
$ ->
timeoutObj = null
$(".comment-user-name").popover(
{
trigger : "manual"
placement: 'top'
template : '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
}
)
$(".popover").onmouseover(
(event, ui) ->
clearTimeout(timeoutObj)
$(this).mouseleave(-> $(this).hide())
)
$(".comment-user-name").mouseenter((event, ui) -> $(".comment-user-name").popover('show'))
$(".comment-user-name").mouseleave((event, ui) -> timeoutObj = setTimeout (-> $(".comment-user-name").popover('hide') ), 3000)
您不能在'<div class="popover" onmouseover="...
中使用 timeoutObj