[英]How do I unbind another jQuery function on .click()?
我运行此脚本可以将菜单栏固定在滚动浏览器上。 此处实际上不需要进行任何更改(应正常运行)。 但是,您可能需要它...
var div = $('#wizMenuWrap');
var editor = $('#main_wrapper');
var start = $(div).offset().top;
$(function fixedPackage(){
$.event.add(window, "scroll", function() {
var p = $(window).scrollTop();
$(div).css('position',((p)>start) ? 'fixed' : 'static');
$(div).css('top',((p)>start) ? '0px' : '');
//Adds TOP margin to #main_wrapper (required)
$(editor).css('position',((p)>start) ? 'relative' : 'static');
$(editor).css('top',((p)>start) ? '88px' : '');
});
});
现在解决当前的问题。 我有另一个脚本函数,该脚本函数调用模式弹出窗口(再次可以正常工作)。 但是,从模态打开时滚动页面时,从UI角度来看并不是一件难事。 所以我想在调用下面的模式脚本时禁用上面的脚本。 换句话说,当我单击以打开模式弹出窗口时,上面的脚本不起作用。
$(function () {
var setUp = $('.setupButton');
// SHOWS SPECIFIED VIEW
$(setUp).click(function () {
$('#setupPanel').modal('show');
//PREVENTS PACKAGE SELECT FIXED POSITION ON SCROLL
$(setUp).unbind('click',fixedPackage);
});
})
如您在上面看到的,我尝试解除绑定滚动功能(第一个代码段),但这是不正确的。
这两个脚本位于两个单独的js库中。
我强烈不同意您应该绑定和取消绑定该事件。 没必要! 滚动事件中的一些逻辑检查模式是否打开应该可以解决此问题:
$(function fixedPackage(){
$(window).bind("scroll", function() {
// if the modal is displayed, do nothing
if ($('#setupPanel').is(':visible'))
return;
// -- existing code here --
});
});
这样,如果模态元素可见,则代码仅在其所在位置停止。 隐藏元素后,代码将继续像以前一样工作,而无需在其他脚本中管理事件的状态……令人困惑!
另外,如其他评论中所述,请勿使用$.event.add
,而应使用公共API方法bind
文档
is
-http://api.jquery.com/is/ visible
选择器-http: //api.jquery.com/visible-selector/ bind
: //api.jquery.com/bind/ 将jquery对象存储到var中时,可以直接调用函数:
var setUp = $('.setupButton');
var div = $('#wizMenuWrap');
var editor = $('#main_wrapper');
setUp.click(...);
seTup.unbind(...);
editor.css(...);
div.css(...);
尝试
$(setUp).unbind('click').die('click')
您需要做的就是将脚本更改为:
$(function () {
var setUp = $('.setupButton');
// SHOWS SPECIFIED VIEW
$(setUp).bind('click',function () {
$('#setupPanel').modal('show');
//PREVENTS PACKAGE SELECT FIXED POSITION ON SCROLL
$(setUp).unbind('click');
});
})
如jQuery Docs中所述, Event handlers attached with .bind() can be removed with .unbind()
。 有关绑定和取消绑定的更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.