2012-02-18 2 views
0

ajaxify.js 플러그인 https://github.com/browserstate/ajaxify을 사용하여 내용을 동적으로로드합니다.jQuery + Javascript : document.ready와 ajax로드간에 중복 함수 통합

문서 준비시 바인딩하는 숫자가 click이지만 새로 추가 된 내용에 클릭 이벤트를 다시 바인딩하려면 해당 함수를 내 Ajax로드 함수 내에 추가해야합니다. 이전에 live 함수의 단일 세트를 사용해 보았지만 작동하지 않았습니다.

어쨌든 다음 코드는 두 번, 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(); 
}); 
관련 문제