jquery toggle触发器显示为none

时间:2013-09-24 16:33:58

标签: javascript jquery html toggle

我有一些奇怪的行为。我希望点击span代码触发事件,让我们说#span id。当我在我的控制台中运行它时,测试:

$('#span').toggle(function(){
    console.log('hi');
},function(){
      console.log('hey');
});

#span显示设置为无。我试图找到一些可能会干扰的代码,但我找不到任何代码......

5 个答案:

答案 0 :(得分:2)

jQuery 1.9中此版本的toggle was removed,所以如果您使用的是jQuery> = 1.9,它将切换显示状态

启用已删除功能的一种可能解决方案是在jQuery之后添加migration plugin

另一种方法是自己编写一个toggleClick插件,如下面的this answer

$.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)
        });
    });
};

然后

$('#span').toggleClick(function(){
    console.log('hi');
},function(){
      console.log('hey');
});

答案 1 :(得分:2)

Jquery不再支持toggle(func,func)toggle()只需切换元素visibleinvisible

答案 2 :(得分:0)

http://api.jquery.com/category/deprecated/

  

.toggle()方法签名在jQuery 1.8中已弃用并已删除   jQuery 1.9。 jQuery还提供了一个名为.toggle()的动画方法   切换元素的可见性。无论是动画还是动画   event方法被触发取决于传递的参数集。

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

您可以使用.one()

DEMO

function handler1() {
    console.log('hi');
    $(this).one("click", handler2);
}

function handler2() {
    console.log('hey');
    $(this).one("click", handler1);
}
$("#span").one("click", handler1);

答案 3 :(得分:0)

它已被弃用,然后在jQuery 1.9中删除。你会找到一些文档here

答案 4 :(得分:-1)

在jquery 1.9中没有更多的切换(以这种方式)。

可以做的是这个并制作你自己的类似toggle的插件:

$.fn.toggleFn = function(){
    var fns = arguments;
    var fns_length = fns.length;
    var idx = 0;
    this.on('click', function(){
        fns[idx % fns_length].apply(this, arguments);
        idx++;
    });
}

使用它:

$('#span').toggleFn(function(){
    console.log('hi');
},function(){
      console.log('hey');
});