2012-03-02 3 views
2

AJAX와 "bind"및 "clone"과 같은 특정 jQuery 함수를 사용하여 "즐겨 찾기에 추가"기능을 작성하는 동안 문제가 나타났습니다. 나는이 개 콘텐츠 영역이복제 된 요소에 대한 다시 바인딩 기능

: 내가 먼저 기능을 설명합니다

  1. 제품 목록을 - ( α- 함수 "즐겨 찾기 추가"제품명, 사진과는 을의) 모든 제품을 포함
  2. 즐겨 찾기 - 즐겨 찾기로 표시된 모든 제품 포함 (요소는 제품과 동일한 html 구조를 가짐)

제품을 즐겨 찾기에 추가 할 때 프로그래밍 방식으로 "즐겨 찾기에 추가"버튼을 "즐겨 찾기에서 제거"버튼으로 변경합니다. 또한 전체 제품 ("즐겨 찾기에서 제거"버튼 포함)을 "즐겨 찾기"영역에 복제합니다.

"즐겨 찾기"영역으로 전환하고 선호하는 제품을 제거하려고하면 작동하지 않습니다. 그런 다음 페이지를 새로 고치면 완전히 제거됩니다.

제 생각으로 DOM 구조를 새로 고치거나 다시 바인딩하는 것과 관련이 있습니다 .. 나는 매우 만족합니다. 이 문제에 대한 종류의 도움이나 설명. 여기

가 (스크립트를 페이지의 끝에 배치되어있다) 내 코드입니다 :

// ACTION: Favorites 
$JQuery('.katoverview_media').find('.prod_action_favorit').bind("click", function(){ 
    //Split data and set variables 
    var type = $JQuery(this).attr("rel").split('%')['0']; 
    var objid = $JQuery(this).attr("rel").split('%')['1']; 
    var favs = parseInt($JQuery('#count_favoriten').html()); 
    if($JQuery(this).hasClass("active")){ 
     $JQuery(this).removeClass("active"); 
     var action  = 'delete'; 
     var favs_new = favs-1; 
     $JQuery.each($JQuery('.katoverview_media_fav').find('.prod_action_favorit'), function() { 
      var checkObjid = $JQuery(this).attr("rel").split('%')['1']; 
      if(checkObjid == objid){ 
       if($JQuery(this).hasClass("active")){ 
        $JQuery(this).parent().parent().parent().remove(); 
       } 
      } 
     }); 
    } else { 
     $JQuery(this).addClass("active"); 
     var action  = 'add'; 
     var favs_new = favs+1; 
     $JQuery(this).parent().parent().parent().clone().appendTo('.katoverview_media_fav'); 
    } 
    var pars = 'type='+type+'&objid='+objid+'&action='+action; 
    $JQuery.ajax({url: "ajax/fav.php?"+pars}); 
    $JQuery('#count_favoriten').html(favs_new).css({color: 'red'}).delay('500').animate({color: '#333'}, 1000); 
}) 

$JQuery('.katoverview_media_fav').find('.prod_action_favorit').bind("click", function(){ 
    //Split data and set variables 
    var type = $JQuery(this).attr("rel").split('%')['0']; 
    var objid = $JQuery(this).attr("rel").split('%')['1']; 
    var favs = parseInt($JQuery('#count_favoriten').html()); 
    if($JQuery(this).hasClass("active")){ 
     $JQuery(this).parent().parent().parent().remove(); 
     var action  = 'delete'; 
     var favs_new = favs-1; 
    } 
    var pars = 'type='+type+'&objid='+objid+'&action='+action; 
    $JQuery.ajax({url: "ajax/fav.php?"+pars}); 
    $JQuery('#count_favoriten').html(favs_new).css({color: 'red'}).delay('500').animate({color: '#333'}, 1000); 
    $JQuery.each($JQuery('.katoverview_media').find('.prod_action_favorit'), function() { 
     var checkObjid = $JQuery(this).attr("rel").split('%')['1']; 
     if(checkObjid == objid){ 
      if($JQuery(this).hasClass("active")){ 
       $JQuery(this).removeClass("active"); 
      } 
     } 
    }); 
}) 
+1

'복제본'은 도움이 될 수있는 두 개의 매개 변수를 허용합니다. 첫 번째 단계였던 [documentation] (http://api.jquery.com/clone/)을보십시오. –

+0

아니요,이 잘못된 기능을 만들 수 있습니다. .live() 사용하여 나를 위해 일한 있지만. –

답변

관련 문제