是否可以傾聽特定元素上的滑動事件?可能將處理程序附加到滑動事件?
我希望它會很容易爲:
$("#element").slideDown();
$('#element').bind('slideDown', function() {
alert('Slidedown event fired');
});
找不到 「了slideDown」 爲event。
正在監聽這種可能的事件?
是否可以傾聽特定元素上的滑動事件?可能將處理程序附加到滑動事件?
我希望它會很容易爲:
$("#element").slideDown();
$('#element').bind('slideDown', function() {
alert('Slidedown event fired');
});
找不到 「了slideDown」 爲event。
正在監聽這種可能的事件?
與Ben on method overriding一些幫助,我是能夠添加一個觸發器的函數調用,您可以綁定到:
$(function(){
;(function($){
var orig_slideDown = $.fn.slideDown;
$.fn.slideDown = function(){
$(this).trigger('slideDown');
orig_slideDown.apply(this, arguments);
};
})(jQuery);
$('.up').click(function(){
$('div').slideUp();
});
$('.down').click(function(){
$('div').slideDown();
});
$('div').bind('slideDown',function(){
$('div').append($('<p>').text('Down Triggered'));
});
});
<a href="#" class="up">Up</a> <a href="#" class="down">Down</a>
<div style="width:300px;height:200px;background-color:red;color:white;">
<p>Hello, world!</p>
</div>
要做到這樣的事情,我只需要添加更多的語義的方法。所以,如果你已經有了一個菜單,你想,當你向下滑動觸發一個事件,而不是做這樣的事情,
var menu = $('#menu');
menu.open = function() {
menu.slideDown();
menu.trigger('menuOpened');
};
然後只需調用menu.open()
,而不是menu.slideDown()
。這種方法在構建其他互相交互的對象時更具可讀性和可維護性。然後,如果您選擇稍後更改開場動畫(例如,淡入淡出或某物),則不必更新與其交互的所有內容。