0

我无法更改要在“单击”而不是“悬停”时调用的函数。我尝试将“悬停”更改为“点击”以及“切换”,但没有得到积极的结果

$('#menu li').hover(
    function(){
            $(this).stop().animate({height: '100px'},1000,function(){});
            $(this).find('div').show(600);
        }
    ,
    function(){
            $(this).stop().animate({height: '20px'},1000,function(){});
        } 
  ); 

如果我想将事件更改为“点击”,是否必须绑定事件?任何帮助是极大的赞赏。

这是小提琴:http: //jsfiddle.net/GANeX/7/

4

4 回答 4

2

试试这个:

http://jsfiddle.net/GANeX/52/

var clicked = 0;
$('#menu li').click(
   function(){
        if(clicked === 0){
            $(this).stop().animate({height: '100px'},1000,function(){});
            $(this).find('div').show(600);
            clicked = 1;
        } else if(clicked === 1){
            $(this).stop().animate({height: '20px'},1000,function(){});  
            clicked = 0;
        }
    }
 );

设置一个变量来跟踪点击状态

于 2013-10-11T18:37:22.610 回答
1

您将两个参数传递给$(...).click(clickHandle). 只需传递一个函数。

检查http://api.jquery.com/click/

在两个论点的情况下,

http://api.jquery.com/click/
于 2013-10-11T18:35:36.013 回答
1

当我改变一切正常时,click只需要一个参数。

于 2013-10-11T18:35:56.697 回答
1

hover()接受两个回调,一个 formouseenter和一个 for mouseleave。如果你想把它改成点击,第一次点击开始第一个动画,第二次开始第二个动画,你需要添加一个状态变量来判断你的元素是被点击过一次还是两次。

$('#menu li').click(
function(){
        if(this.clicked)
        {
         //callback 1
        }
        else
       {
        //callback 2
       }
       this.clicked = !this.clicked;
    } 

);

于 2013-10-11T18:38:04.050 回答