切换添加显示无?

时间:2013-03-12 11:43:09

标签: jquery toggle

我正在尝试创建一个框但是当单击一个列表项时它会下降然后在单击时返回。我以前做了很多次,但由于某种原因,Jquery正在添加display:none;

        $('li.item-162').toggle(function(){
                           $('.login').animate({
                                top: '27px'
                                 }, 1000);

                        },function() {          
                             $('.login').animate({
                                top: '-212px'
                                 }, 1000);
                        });

        $(".li.item-162").show();

在萤火虫中我的代码显示 enter image description here 你可以看到它住在这里.. http://rdhealthandsafety.co.uk/index.php

为什么会发生这种情况的任何想法,我猜我的星期二早上布鲁斯:(

1 个答案:

答案 0 :(得分:6)

您打算使用.toggle()功能的方式是已弃用,因为 jQuery 1.8 并且已已删除 jQuery 1.9

Category: Deprecated 1.8

  

.toggle()将两个或多个处理程序绑定到匹配的元素,以便在备用点击时执行。

这是Changes of Note in jQuery 1.9

的原因
  

这是“单击运行指定函数的元素”.toggle()的签名。它不应与.toggle()的“更改元素的可见性”相混淆,而不是已弃用。前者被删除以减少混淆并提高库中模块化的可能性。 jQuery Migrate插件可用于恢复功能。

尽管Gaby aka G. Petrioli创建的函数与What to use instead of toggle(…) in jQuery > 1.8?的答案相同:

$.fn.toggleClick = function(){
    var methods = arguments, // store the passed arguments for future reference
        count = methods.length; // cache the number of methods 

    //use return this to maintain jQuery chainability
    return this.each(function(i, item){
        // for each element you bind to
        var index = 0; // create a local counter for that element
        $(item).click(function(){ // bind a click handler to that element
            return methods[index++ % count].apply(this,arguments); // that when called will apply the 'index'th method to that element
            // the index % count means that we constrain our iterator between 0 and (count-1)
        });
    });
};

您可以像这样使用它:

$('selector').toggleClick(function1, function2, […]);