【问题标题】:How can I change hover to click event?如何将悬停更改为单击事件?
【发布时间】:2017-01-05 14:43:28
【问题描述】:

我更改了以下代码并将hover() 替换为on('click',...) 并删除stop(true,true)。我也试过mouseenter()。使用hover() 没问题。如何将此添加到悬停事件以进行单击事件,并且我想在mouseout() 事件中使用悬停。更改点击事件后唯一的插入符号正在工作。

菜单:

<div id="navbar" class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li *ngFor="let item of _profile.menus;" class="dropdown"><a
            href="#" class="dropdown-toggle" data-toggle="dropdown"     role="button"
            aria-haspopup="true" aria-expanded="true">{{item.caption}}<b class="caret"></b></a>
            <ul class="dropdown-menu">
                <li><a (click)="clk()" class="ex1">{{subitem.caption}}</a></li>
            </ul>
        </li>
    </ul>
</div>

悬停的jQuery

 jQuery(function(){
    jQuery(".dropdown").hover(            
            function() {
                jQuery('.dropdown-menu',this).stop( true, true ).fadeIn("fast");
                jQuery(this).toggleClass('open');
                jQuery('b',this).toggleClass("caret caret-up");                
            },
            function() {
                jQuery('.dropdown-menu', this).stop( true, true ).fadeOut("fast");
                jQuery(this).toggleClass('open');
                jQuery('b', this).toggleClass("caret caret-up");                
            });
    });

改变了点击的jQuery

jQuery(function(){
        jQuery(".dropdown").on('click',            
                function() {
                    jQuery('.dropdown-menu',this).fadeIn("fast");
                    jQuery(this).toggleClass('open');
                    jQuery('b',this).toggleClass("caret caret-up");                
                },
                function() {
                    jQuery('.dropdown-menu', this).fadeOut("fast");
                    jQuery(this).toggleClass('open');
                    jQuery('b', this).toggleClass("caret caret-up");                
                });
        });

CSS

 a.ex1:hover, a.ex1:active {font-size: 110%;}

.dropdown-menu {
  background-color: #3b5998;

  opacity:.3;
  -webkit-transform-origin: top;
  transform-origin: top;
  -webkit-animation-fill-mode: forwards;  
  animation-fill-mode: forwards; 
  -webkit-transform: scale(1, 0);
  transition: all 0.3s linear;
  -webkit-transition: all 0.3s linear;
 }

.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  color: black;
  background-color: #efefef;  
 }

.dropdown-menu > li > a {
  color: white;
  text-decoration: none;
 }

.nav > li > a:hover,
.nav > li > a:focus{
    color: white;
    text-decoration: none;
    background-color: #5872a7; 
 }

.nav > li >a {
    color: white;
 }

.nav .open>a, .nav .open>a:focus, .nav .open>a:hover {
    background-color: rgba(255, 255, 255, 0.15);
    border-color: #286090;
 }

.navbar-brand, .navbar-nav>li>a {
    text-shadow: 0 0px 0;
    color: #f7fcff;
    text-decoration: none;
}

.navbar-brand {
    float: left;
    height: 50px;
    padding: 15px 15px;
    font-size: 20px;
    line-height: 20px;
}

.icon-bar
{
    display:block;
    width:22px;
    height:2px;
    border-radius:1px;
    border:1px solid white;
}

.open > .dropdown-menu {
  -webkit-transform: scale(1, 1);
  transform: scale(1, 1);  
  opacity:1;
}

.caret-up {
    width: 0; 
    height: 0; 
    border-left: 4px solid rgba(0, 0, 0, 0);
    border-right: 4px solid rgba(0, 0, 0, 0);
    border-bottom: 4px solid;

    display: inline-block;
    margin-left: 2px;
    vertical-align: middle;
}

【问题讨论】:

  • 你在 JQ 中使用 angular2 模板吗?
  • 是的。我正在使用 angular2 模板。

标签: jquery css twitter-bootstrap jquery-ui


【解决方案1】:

我不确定,如果这是您的意图,但您可以使用 toggle 代替 hover

http://api.jquery.com/toggle/

jQuery(function(){
        jQuery(".dropdown").toggle(
                function() {
                    jQuery('.dropdown-menu',this).fadeIn("fast");
                    jQuery(this).toggleClass('open');
                    jQuery('b',this).toggleClass("caret caret-up");                
                },
                function() {
                    jQuery('.dropdown-menu', this).fadeOut("fast");
                    jQuery(this).toggleClass('open');
                    jQuery('b', this).toggleClass("caret caret-up");                
                });
        });

on('click', callback) 如你所见只有一个回调(每次点击事件触发)

toggle(callback1, callback2)有两个,交替触发

hover(callback1, callback2)也有两个,回调1在mouseover事件上触发,回调2在mouseout事件上触发

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多