【发布时间】:2013-12-20 21:49:37
【问题描述】:
我整理了一个简单的小提琴来尝试解决我想要做的事情。基本上我有一个编辑器,用户可以在上面操作不同的元素。当用户将鼠标悬停在可编辑的元素上时,通过 css 会出现方格轮廓。一旦用户单击轮廓更改为实心轮廓以指示这是现在可编辑的元素,因此我删除了单击时的悬停事件,因此如果他们在页面周围移动鼠标,则不会在其他可编辑元素周围出现方格线在页面上,基本上锁定了它们,除了被选中的那个。
如果用户决定不编辑该元素,我有一个按钮可以让他们返回并“取消”重新启用应该悬停在所有可编辑元素上。到目前为止,一旦我将其置于锁定状态,我就无法再次启用该事件。
这是一个小提琴 http://jsfiddle.net/ZqfTX/276/
$('.element').on({
mouseover: function(){
$(this).css({'outline':'2px dashed red'});
},
mouseleave: function(){
$(this).css({background: '#CCC'});
},
click: function(){
$(this).off('mouseover');
$(this).off('mouseleave');
$(this).css({'outline':'2px solid #369fe4'});
}
});
$('#button').click(function(){
$('.element').on('mouseover');
$('.element').on('mouseleave');
});
有人可以看看,让我知道为什么我无法使用 .on 重新启用该活动
【问题讨论】:
-
调用
.on()时必须提供处理函数。 -
不是添加和删除事件处理程序,而是添加和删除一个类,并使用事件委托将处理程序绑定到类。
-
您也可以使用类来更改 CSS,而不是在处理程序中这样做。
-
感谢使用 clases 更改大纲是一个简单的解决方法。但是,我不确定您所说的处理函数是什么意思,您能举个例子吗?
-
$('#button').on('click',function(){有一个处理函数,$('#button').on('mouseover');没有。
标签: jquery binding click jquery-hover