【发布时间】:2018-01-16 00:23:27
【问题描述】:
我正在尝试用悬停时的注销按钮替换用户名。当页面加载时,我将其作为导航之一。元素...
<li id="logout_name">
<span class="nav_icon_sizing hidden-xs no_focus" style="position: relative; top: 10px; left: 8px; color: white;"><?php echo ucfirst($user->data()->fname); ?></span>
</li>
我正在尝试让文本切换为带有此功能的注销图标...
$('#logout_name').mouseover(function(){
$('#logout_name').replaceWith('<li id="logout_name"><a href="<?=$us_url_root?>users/logout.php" class="nav_icon_sizing hidden-xs no_focus" style="padding-top: 15px; padding-bottom: 10px;" data-tooltip="tooltip" title="Logout" data-placement="bottom"><i class="fa fa-fw fa-sign-out"></i></a><li>')
});
$('#logout_name').mouseleave(function(){
$('#logout_name').replaceWith('<span class="nav_icon_sizing hidden-xs no_focus" style="position: relative; top: 10px; left: 8px; color: white;"><?php echo ucfirst($user->data()->fname); ?></span>');
});
当我将鼠标悬停在名称上时,它确实会变为注销图标,但是...
- 鼠标移开时不会变回用户名,并且
- 精美的引导工具提示无法正确显示注销图标。我得到的是标准的 HTML 工具提示。
我觉得如果$(document).ready() 可以重新称为mouseover/mouseleave 一切都会好起来的,但我不认为这是真的。
有什么想法吗?
【问题讨论】:
-
你应该做的是设置元素的
.text()content。而且您不需要一遍又一遍地执行 DOM 选择。$(this).find("span").text("...new data...")什么的。 -
...坦率地说,我认为您可能应该退后一步,找出解决问题的更好方法。似乎您有几个元素将按照您选择的方式一遍又一遍地创建。通常最好只显示和隐藏元素。
-
@rockstar:那是我的第一个计划,但是当我做这种事情时(不替换
<li id="logout_name">),将鼠标悬停在注销图标上时会不断闪烁,就像它正在重新加载一样不断地。而且mouseleave不起作用。想法?
标签: javascript jquery html