3

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

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

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

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

在萤火虫中我的代码显示 在此处输入图像描述 你可以在这里看到它.. http://rdhealthandsafety.co.uk/index.php

任何想法为什么会发生这种情况,我想这是我周二早上的忧郁:(

4

1 回答 1

6

您打算使用该.toggle()函数的方式自jQuery 1.8以来已被弃用,并已在jQuery 1.9中删除

类别:已弃用 1.8

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

这是在 jQuery 1.9 中的注释更改中得出的

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

尽管如此, Gaby aka G. Petrioli创建了一个函数,该函数的作用与回答What to use 而不是toggle(…)在 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, […]);
于 2013-03-12T12:49:33.123 回答