我有一些奇怪的行为。我想在点击span
标签时触发事件,比如说#span
id。当我在控制台中运行它时,测试:
$('#span').toggle(function(){
console.log('hi');
},function(){
console.log('hey');
});
显示#span
设置为无。我试图找到一些可能会干扰的代码,但我没有找到任何...
我有一些奇怪的行为。我想在点击span
标签时触发事件,比如说#span
id。当我在控制台中运行它时,测试:
$('#span').toggle(function(){
console.log('hi');
},function(){
console.log('hey');
});
显示#span
设置为无。我试图找到一些可能会干扰的代码,但我没有找到任何...
此版本的切换在 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');
});
Jquery 不再支持toggle(func,func)
,toggle()
只需切换元素visible
或invisible
.
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);
它已被弃用,然后在jQuery 1.9
. 你会在这里找到一些文档
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');
});