2012-02-13 22 views
1

私はjQueryアコーディオンを使用しており、各アコーディオンアイテムの既存のクリックイベントを保存し、すべてのイベントを削除し、必要に応じて追加したいと考えています。私は.onと.offを使用してハンドラをアタッチ/デタッチすることに慣れていますが、オーバーライドせずに各アコーディオンアイテムのデフォルトハンドラを保持するにはどうすればよいですか?各要素とアコーディオンのJqueryイベントハンドラ

答えて

1

jQueryの格納イベントとdata('eventsにおけるそれらのハンドラ) `。このようなことを試すことができます。

var oldHandlers = $('#datepicker').data('events'); 

$('elementSelector').unbind();//will unbind all the handlers 

oldHandlersはこの形式のオブジェクトになります。

{ 
    click: [ { 
       handler: function(){.. } 
       .. 
      }, 
      { 
       handler: function(){.. } 
       .. 
      } 
      .. 
      ] 
    focus: [ { 
       handler: function(){.. } 
       .. 
      }, 
      { 
       handler: function(){.. } 
       .. 
      } 
      .. 
      ] 
} 

あなたはoldHandlersからclickハンドラを取得したい場合は、あなたが言うことができます。

if(oldHandlers && oldHandlers.click && oldHandlers.click.length > 0){ 
    $('elementSelector').click(oldHandlers.click[0].handler); 
} 
+0

シャンカーに感謝します。私はこれを打ち明け、それがどのように進むのか教えてください。 –

+0

感謝のように働いた、ありがとう! –

0
$('#foo').bind('click', function() { 
    alert('The quick brown fox jumps over the lazy dog.'); 
}); 

// will remove click event 
$('#foo').unbind('click'); 
+0

Mgraph、おかげで、私は新しいクリックイベントの作品を結合、私はそれを上書きし、デフォルトの機能を再コーディングすることなく、アコーディオンでボックスのデフォルトのイベントのうち、既存で取得する方法を意図方法を実現します。 –

関連する問題