2011-01-21 7 views
3

特定の要素でスライダダウンイベントを聴くことはできますか?slidedownイベントにハンドラを追加することはできますか?

私はとそれが簡単だろう期待していた。

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

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

eventとして「slideDown」を見つけることができませんでした。

このようなイベントを聞いていますか?私はあなたにバインドできる関数呼び出しにトリガーを追加することができましたBen on method overridingからいくつかの助けを借りて

答えて

0

:この種のものを行うには

$(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()呼び出したいので、場合。この方法は、相互にやりとりする他のオブジェクトを構築する際に、読みやすく保守性があります。その後、開いているアニメーションを後で(例えばfadeInなどに)変更する場合は、 を更新する必要はありません。

関連する問題