我覆盖了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()
取消它。我需要添加一些来支持这个吗?
答案 0 :(得分:0)
这里最好的选择是使用.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;
}
});
(还修正了插件,使其正确链接并在所有选定的元素上运行)