我有一些奇怪的行为。我希望点击span
代码触发事件,让我们说#span
id。当我在我的控制台中运行它时,测试:
$('#span').toggle(function(){
console.log('hi');
},function(){
console.log('hey');
});
#span
显示设置为无。我试图找到一些可能会干扰的代码,但我找不到任何代码......
答案 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()
只需切换元素visible
或invisible
。
答案 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()
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');
});