2012-02-18 16 views
0

私はajaxify.jsプラグインhttps://github.com/browserstate/ajaxifyを使用してコンテンツを動的に読み込みます。jQuery + Javascript:document.readyとajaxの間で重複機能を統合する

私はドキュメント上でバインドする機能を数多く持っていますが、新たに追加されたコンテンツにクリックイベントを再バインドするには、これらの関数をさらにajaxロード関数の中に入れなければなりません。私はlive機能の単一のセットを使用しようとしましたが、機能しませんでした。

とにかく、私は次のコードを2回、document.ready(function(){ })の中に入れて、もう一度コンテンツがロードされた後にもう一度ajaxify.jsの中に入れます。

私はそれが余分だと知っていますが、私は一度だけ関数を書く方法についてはわかりませんので、他の場所にそれらを "含める"ことができます。どのようにしてこれらの機能を最適化して、それらを統合して効率的に使用することができますか?

ありがとうございました!新しい機能は動作するはずの定義

 var $filterclear = $('.filters .filter-clear'), 
      filtercount = $filterclear.length, 
      $searchedfor = $('.searched-for'), 
      is_search = $searchedfor.length; 

     $filterclear.bind('click', function(){ 
      var $me = $(this); 

      if(filtercount == 3) { 
       $('.clear-all.filter-clear').addClass('filter-out').fadeOut('fast'); 
       $(this).addClass('filter-out').fadeOut('fast'); 
      } else { 
       $(this).addClass('filter-out').fadeOut('fast'); 
      } 

      if($me.hasClass('clear-all') || filtercount == 1) { 
       $filterclear.addClass('filter-out').fadeOut('fast'); 
       if(is_search !== 0) { 
        $('.filters').fadeOut(); 
       } 
      } 
     });  

     $('.tag.remove-term').bind('click', function(){ 
      var $me = $(this), 
       mytext = $me.text(), 
       $myfilter = $('.filters .filter-clear:contains("'+ mytext +'")'); 

      if(filtercount == 3) { 
       $('.clear-all.filter-clear').addClass('filter-out').fadeOut('fast'); 
       $myfilter.addClass('filter-out').fadeOut('fast'); 
      } else { 
       $myfilter.addClass('filter-out').fadeOut('fast'); 
      } 
     }); 

     $searchedfor.find('.filter-clear').bind('click',function(){ 
      $searchedfor.fadeOut(); 
     }); 
+0

間違い 'live'イベントを使用するには、動的ページに対処するための最良の方法のように聞こえます。 「生きている」あなたの問題は何でしたか? –

+0

それはうまくいきませんでした! –

答えて

1

(私はそれをテストしていない):

var $filterclear = $('.filters .filter-clear'), 
    filtercount = $filterclear.length, 
    $searchedfor = $('.searched-for'), 
    is_search = $searchedfor.length; 

var doSomething($myfilter) { 
    if(filtercount == 3) { 
     $('.clear-all.filter-clear').addClass('filter-out').fadeOut('fast'); 
    } 
    $myfilter.addClass('filter-out').fadeOut('fast'); 
}; 

$filterclear.bind('click', function() { 
    var $me = $(this); 

    doSomething($me); 

    if($me.hasClass('clear-all') || filtercount == 1) { 
     $filterclear.addClass('filter-out').fadeOut('fast'); 
     if(is_search !== 0) { 
      $('.filters').fadeOut(); 
     } 
    } 
}); 

$('.tag.remove-term').bind('click', function(){ 
    var $me = $(this), 
     mytext = $me.text(), 
     $myfilter = $('.filters .filter-clear:contains("'+ mytext +'")'); 

    doSomething($me); 
}); 

$searchedfor.find('.filter-clear').bind('click',function(){ 
    $searchedfor.fadeOut(); 
}); 
関連する問題