我试过这个:
$('.aaa').mouseenter(function () {
$(this).css('background', '#aaaaaa');
$(this).css('border', 'solid 1px red');
});
$('.aaa').mouseleave(function () {
$(this).css('background','blue');
});
$('#tog').click(function () {
$('.aaa').off('mouseenter mouseleave').on('mouseenter mouseleave');
});
它不起作用 - 只关闭事件/功能。
此外,如何只切换函数的一部分 - 例如只是$(this).css('background', '#aaaaaa');
- 而不是切换整个函数?
修改 solution 1和solution 2。由Shimon Rachlenko解决。
答案 0 :(得分:5)
您可以使用一些共享变量来标记何时关闭功能:
var flag = true;
$('.aaa').mouseenter(function () {
if(flag) { // enable this functionality only when flag is set
$(this).css('background', '#aaaaaa');
}
$(this).css('border', 'solid 1px red');
});
$('.aaa').mouseleave(function () {
if(!flag) return;
$(this).css('background','blue');
});
$('#tog').click(function () {
flag = !flag;
});
答案 1 :(得分:1)
像
这样的东西function mouseenterbk() {
$(this).css('border', 'solid 1px red');
}
function mouseenter() {
$(this).css('background', '#aaaaaa');
}
function mouseleave() {
$(this).css('background', 'blue');
}
$('.aaa').on('mouseenter.bk', mouseenterbk).mouseenter(mouseenter).mouseleave(mouseleave);
//this is a very dump implementation of the click toggle
var flag;
$('#tog').click(function () {
if (flag) {
$('.aaa').on('mouseenter.bk', mouseenterbk);
flag = false;
} else {
$('.aaa').off('mouseenter.bk');
flag = true;
}
});
演示:Fiddle
答案 2 :(得分:0)
var toggle = false;
$('#tog').click(function () {
if(toggle == false){
$('.aaa').mouseenter(function () {
$(this).css('background', '#aaaaaa');
$(this).css('border', 'solid 1px red');
});
$('.aaa').mouseleave(function () {
$(this).css('background','blue');
});
toggle = true;
}
else{
$('.aaa').off('mouseenter mouseleave');
toggle = false;
}
});