2011-01-01 2 views
0

내 기본 페이지에서 jQuery를 통해 ajax 파일을 호출합니다. 아약스 파일은 일부 추가 jquery 코드입니다. 원본 링크는 다음과 같습니다Jquery cant는 Ajax 호출 내에서 작동하는 facebox를 얻습니다.

<a href="/page1.php" class="guest-action notify-function"><img src="/icon1.png"></a> 

다음 코드 :

$(document).ready(function(){ 

    $('a[rel*=facebox]').facebox(); 

    $('.guest-action').click(function() { 
     $.get($(this).attr('href'), function(responseText) { 
      $.jGrowl(responseText); 
     }); 
     return false; 
    }); 

    $('.notify-function').click(function() { 
     $(this).find('img').attr('src','/icon2.png'); 
     $(this).attr('href','/page2.php'); 
     $(this).removeClass('guest-action').removeClass('notify-function').attr('rel','facebox'); 
    }); 
}); 

그래서 기본적으로 후 기능이 알려 그때 제거하고, 내가 아이콘과 링크의 URL을 변경하고 클릭 클래스를 클릭이 다시 실행되지 않도록 rel = "facebox"를 링크에 추가하면 새로운 icon2.png를 클릭하면 facebox 창이 팝업됩니다. 문제는 내가 초기 아이콘을 클릭 한 후에 새로운 아이콘을 클릭하려고 할 때를 제외하고는 모두 잘 작동한다는 것입니다 .png 여전히 guest-action에서 jgrowl 코드를 실행합니다. 그러나 소스를 볼 때 다음과 같이 표시됩니다.

<a href="/page2.php" rel="facebox" class=""><img src="/icon2.png"></a> 

그래서 제대로 작동해야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 아약스 파일을 호출하는 메인 페이지에 facebox 코드를 추가하려고 시도했지만 여전히 같은 문제가 발생했습니다.

답변

1

필자는 facebox 코드를 자체 함수로 옮긴 다음 클래스를 제거하고 클릭 연결을 해제 한 후에 호출해야합니다. 좋아요 :

$(document).ready(function(){ 

function reInit() { 
    $('a[rel*=facebox]').facebox(); 
} 

    $('.guest-action').click(function() { 
     $.get($(this).attr('href'), function(responseText) { 
      $.jGrowl(responseText); 
     }); 
     return false; 
    }); 

    $('.notify-function').click(function() { 
     $(this).find('img').attr('src','/icon2.png'); 
     $(this).attr('href','/page2.php'); 
     $(this).unbind('click').removeClass('guest-action').removeClass('notify-function').attr('rel','facebox'); 
reInit(); 
    }); 
});