jquery - 回调内绑定(bind)/取消绑定(bind)

标签 jquery dynamic callback bind

我遇到了来自垃圾浏览器的各种各样的问题,我似乎无法用我读过的任何东西来克服这些问题。情况是这样的...我正在使用第三方插件来生成图库。该插件带有图片更改回调,每次更改图像时都会触发该回调。

我想做的是为两个div添加css...一个是包装div,当单击子div时它将滑出,并在再次单击子div时滑回。

这是回调:

        changepicturecallback: function(){
                    $('.sxpp_commentsImage').unbind(toggle);
    oldWidth = $('.pp_pic_holder').width() - 20,
    newWidth = $('.pp_pic_holder').width() + (200),
    newHeight = $('.pp_hoverContainer').height(),
    cImageAlign = newWidth - 20;

                var toggle = function() {
                   if(newWidth == $('.sxpp_comments').width()){
                        $('.sxpp_comments').animate({width: oldWidth});
                            }else{
                        $('.sxpp_comments').animate({width: newWidth});
                    }
                }

            $('.sxpp_comments').width(oldWidth).css('background-color','red'); 
      $('.sxpp_commentsImage').css({'float':'right','background-color':'green','width':'20px','height':newHeight});     
            $('.sxpp_commentsImage').bind('click',toggle);      
  }

这在 FF4 和 Chrome 中工作得很好...但是,就好像“绑定(bind)”在 Internet Explorer 中没有发生一样。我一直在阅读“.live”和“.delegate”方法,但是(A)我不熟悉它们的工作原理(B)如果可以清除更改中的“.live”,然后添加它回到我正在做的绑定(bind)。

有什么见解或我可能会忽略的事情吗?

编辑***...单击链接时会动态创建 div(显示灯箱)。所以从我读到的所有内容来看……绑定(bind)事件无论如何都是错误的路线。

最佳答案

如果您想在回调中取消绑定(bind)事件函数,只需使用:

$('body').bind('click', function(evt){
    console.log('I will be written only once');
    $(this).unbind(evt);
})

关于jquery - 回调内绑定(bind)/取消绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075507/

相关文章:

javascript - 使用 javascript setTimeout 来查看 div 是否已加载

javascript - 即使有 When Promise 回调金字塔

Javascript 回调函数与仅调用函数

javascript回调动画

javascript - 如何获取所有没有使用 jQuery 选择选项的选择元素?

javascript - 如何检查元素是否有点击处理程序?

javascript - 将一个函数的值存储到另一个函数并从中获取值

c - 如何在 C 中使用动态多维数组?

jquery - 转换时缩小 div

c++ - 动态数组错误