Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery重写事件默认值_Javascript_Jquery - Fatal编程技术网

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;
    }
});
(还更正了插件,使其正确链接并在所有选定元素上运行)


如何取消向下滑动?不允许它开始。但是,由于向下滑动的行为并不直接限于触发的事件,因此您无法以这种方式阻止它。默认操作仅与标准事件关联,例如,单击提交按钮提交表单,输入字段中的键盘事件会更新值。没有与您创建的事件关联的默认操作,因此无需阻止。