Javascript jQuery重写事件默认值
我正在覆盖Javascript jQuery重写事件默认值,javascript,jquery,Javascript,Jquery,我正在覆盖slideDownjQuery事件,以便捕获它并运行我自己的代码: ; (function ($) { var orig_slideDown = $.fn.slideDown; $.fn.slideDown = function () { $(this).trigger('slideDown'); orig_slideDown.apply(this, arguments); };
slideDown
jQuery事件,以便捕获它并运行我自己的代码:
; (function ($) {
var orig_slideDown = $.fn.slideDown;
$.fn.slideDown = function () {
$(this).trigger('slideDown');
orig_slideDown.apply(this, arguments);
};
})(jQuery);
我现在可以将代码绑定到此事件:
$('.step2').bind('slideDown', function (e) {
if(ConditionsNotMet()){
e.preventDefault();
}
但是我无法使用
e.preventDefault()
取消它。是否需要添加一些内容来支持此操作?您最好使用.triggerHandler
,而不是使用preventDefault,只需返回false即可。然后,您可以检查triggerHandler的返回值,并使用该值决定是否启动slidedown
;(function ($) {
var orig_slideDown = $.fn.slideDown;
$.fn.slideDown = function () {
var orig_arguments = arguments;
return this.each(function () {
if ($(this).triggerHandler('slideDown') !== false) {
orig_slideDown.apply($(this), orig_arguments);
}
});
};
})(jQuery);
$('.step2').bind('slideDown', function () {
if(someCondition()){
return false;
}
});
(还更正了插件,使其正确链接并在所有选定元素上运行)
如何取消向下滑动?不允许它开始。但是,由于向下滑动的行为并不直接限于触发的事件,因此您无法以这种方式阻止它。默认操作仅与标准事件关联,例如,单击提交按钮提交表单,输入字段中的键盘事件会更新值。没有与您创建的事件关联的默认操作,因此无需阻止。