2011-01-21 68 views
3

是否可以傾聽特定元素上的滑動事件?可能將處理程序附加到滑動事件?

我希望它會很容易爲:

$("#element").slideDown(); 

$('#element').bind('slideDown', function() { 
    alert('Slidedown event fired'); 
}); 

找不到 「了slideDown」 爲event

正在監聽這種可能的事件?

回答

0

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> 
3

要做到這樣的事情,我只需要添加更多的語義的方法。所以,如果你已經有了一個菜單,你想,當你向下滑動觸發一個事件,而不是做這樣的事情,

var menu = $('#menu'); 
menu.open = function() { 
    menu.slideDown(); 
    menu.trigger('menuOpened'); 
}; 

然後只需調用menu.open(),而不是menu.slideDown()。這種方法在構建其他互相交互的對象時更具可讀性和可維護性。然後,如果您選擇稍後更改開場動畫(例如,淡入淡出或某物),則不必更新與其交互的所有內容

相關問題