当我点击一个元素时,我想取消绑定“mouseenter”和“mouseleave”事件,但是如果点击了另一个元素,我想重新绑定它们 - 这不起作用。
任何帮助?
这是代码:
<script type="text/javascript">
$(document).ready(function(){
$("#shape1 img").click(function(){
$("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").unbind('mouseenter mouseleave');
});
$("#close").click(function(){
$("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").bind('mouseenter mouseleave');
});
});
</script>
非常感谢!
答案 0 :(得分:0)
.bind()
函数希望您传递一个函数,以便在触发这些事件时执行。
$("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").bind('mouseenter mouseleave', function(event) {
// do something here when the mouseenter or mouseleave events are triggered
});
当你调用.unbind()
时,事件处理程序被完全删除,jQuery将不记得它是什么。你不能简单地调用.bind()
来撤消它,并让它知道它应该响应那些事件而执行的代码。
答案 1 :(得分:0)
因为您需要分配回调以在事件发生时执行。
尝试:
<script type="text/javascript">
$(document).ready(function(){
var myFunctionMouseEnter = function(){
alert('Hey');
};
var myFunctionMouseleave = function(){
alert('Hey');
};
$("#shape1 img").click(function(){
$("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").off('mouseenter mouseleave');
});
$("#close").click(function(){
$("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").on('mouseenter',myFunctionMouseEnter )
.on('mouseleave',myFunctionMouseleave );
});
});
</script>
答案 2 :(得分:0)
bind只会绑定当前现有项目的事件处理程序。
来自文档Bind()
处理程序附加到当前选定的元素中 jQuery对象,因此这些元素必须存在于调用点 发生.bind()
使用On方法。
$("#shape1 img").click(function(){
$("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").off('mouseenter');
});
$("#close").click(function(){
$("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").on('mouseenter',myFunction1);
$("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").on('mouseleave',myFunction2);
});