2

我有一些奇怪的行为。我想在点击span标签时触发事件,比如说#spanid。当我在控制台中运行它时,测试:

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

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

4

5 回答 5

2

此版本的切换在 jQuery 1.9 中被删除,因此如果您使用 jQuery >= 1.9,它将切换显示状态

启用已删除功能的一种可能解决方案是在 jQuery 之后添加迁移插件

另一种方法是自己编写一个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');
});
于 2013-09-24T16:35:30.157 回答
2

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

于 2013-09-24T16:35:38.050 回答
0

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

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

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

你可以使用.one()

演示

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

function handler2() {
    console.log('hey');
    $(this).one("click", handler1);
}
$("#span").one("click", handler1);
于 2013-09-24T16:36:12.020 回答
0

它已被弃用,然后在jQuery 1.9. 你会在这里找到一些文档

于 2013-09-24T16:37:29.573 回答
-1

jquery 1.9 中不再有切换(以那种方式)。

可以做的就是制作您自己的类似切换的插件:

$.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');
});
于 2013-09-24T16:40:15.993 回答